Obtenir l'emplacement actuel du script PowerShell
-
Utilisation de la cmdlet
Split-Path
pour obtenir l’emplacement actuel du script PowerShell -
Utilisation de la variable
$PSScriptRoot
pour obtenir l’emplacement actuel du script PowerShell - Obtention du répertoire de travail dans Windows PowerShell pour 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 specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn