Obtenir l'emplacement actuel du script PowerShell

Marion Paul Kenneth Mendoza 30 janvier 2023
  1. Utilisation de la cmdlet Split-Path pour obtenir l’emplacement actuel du script PowerShell
  2. Utilisation de la variable $PSScriptRoot pour obtenir l’emplacement actuel du script PowerShell
  3. Obtention du répertoire de travail dans Windows PowerShell pour obtenir l’emplacement actuel du script PowerShell
Obtenir l'emplacement actuel du script PowerShell

Chaque fois que nous avons besoin de référencer un module ou un script commun, nous aimerions utiliser des chemins relatifs au fichier de script actuel. De cette façon, le script peut toujours trouver d’autres scripts dans la bibliothèque.

Dans cet article, nous discuterons de différentes manières d’obtenir l’emplacement actuel du script PowerShell en cours d’exécution.

Utilisation de la cmdlet Split-Path pour obtenir l’emplacement actuel du script PowerShell

Avant PowerShell 3, il n’y avait pas de meilleur moyen d’interroger la propriété MyInvocation.MyCommand.Definition à l’aide de la cmdlet Split-Path.

Split-Path -Parent $($global:MyInvocation.MyCommand.Definition)

la cmdlet Split-Path est utilisée avec le paramètre -Parent pour renvoyer le répertoire actuel du script en cours d’exécution.

Il convient de noter que cela ne fonctionnera que si vous incluez la syntaxe ci-dessus sur un fichier PowerShell (.ps1) enregistré. L’exécution de la syntaxe ci-dessus dans la ligne de commande renverra une exception Null.

Il convient également de noter que l’exécution de la syntaxe ci-dessus dans l’environnement de script intégré (ISE) de PowerShell en tant que sélection (Exécuter en tant que sélection ou en appuyant sur F8) déclenchera une exception ParameterArgumentValidationErrorNullNotAllowed ou une exception Null.

Un remède simple pour résoudre le problème est d’appeler la variable $psISE et d’obtenir la propriété CurrentFile.FullPath, et à partir de là, vous pouvez obtenir l’emplacement actuel du script. N’oubliez pas que cette syntaxe est mieux utilisée lors des tests dans PowerShell ISE.

Split-Path $psISE.CurrentFile.FullPath

Utilisation de la variable $PSScriptRoot pour obtenir l’emplacement actuel du script PowerShell

Si vous exécutez PowerShell version 3 ou ultérieure, une variable automatique a été introduite pour stocker le fichier actuel ou le répertoire du module.

La variable $PSScriptRoot renvoie la valeur du répertoire du script en cours d’exécution.

$PSScriptRoot

Obtention du répertoire de travail dans Windows PowerShell pour obtenir l’emplacement actuel du script PowerShell

Maintenant que nous avons discuté de la façon d’obtenir l’emplacement actuel sur le script, cela ne ferait pas de mal d’apprendre à obtenir le répertoire de travail actuel de notre script.

Dans Windows PowerShell v2, la variable $ExecutionContext contient la propriété EngineIntrinsics. Vous pouvez utiliser cette variable et cette propriété pour rechercher les objets d’exécution disponibles pour les cmdlets, y compris le répertoire de travail actuel du script Windows PowerShell en cours d’exécution.

$ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath('.\')

Toutefois, si vous exécutez la dernière version de Windows PowerShell, une cmdlet distincte a été introduite pour rendre les choses plus pratiques. Nous pouvons utiliser la cmdlet Get-Location et appeler la propriété Path pour obtenir le répertoire de travail actuel du script.

(Get-Location).Path
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn