Comment obtenir l'emplacement actuel du script PowerShell
-
Utilisation du cmdlet
Split-Path
pour obtenir l’emplacement actuel du script PowerShell -
Utilisation de la variable
$PSScriptRoot
pour obtenir l’emplacement actuel du script PowerShell - Obtenir le répertoire de travail dans Windows PowerShell pour obtenir l’emplacement actuel du script PowerShell
- Conclusion

Dans ce guide complet, nous approfondissons diverses méthodes pour déterminer l’emplacement actuel d’un script PowerShell, un aspect fondamental qui améliore la portabilité et la fiabilité des scripts. Chaque méthode discutée s’adresse à différentes versions de PowerShell et scénarios de script, garantissant une large applicabilité.
Nous commençons par le cmdlet Split-Path
, une approche polyvalente pour les versions antérieures de PowerShell, puis nous passons à la commodité de $PSScriptRoot
dans PowerShell 3 et ultérieur. Ensuite, nous explorons la méthode robuste $ExecutionContext
et le cmdlet simple Get-Location
, répondant à divers environnements et exigences.
Enfin, nous simplifions le processus avec l’alias familier pwd
, mettant en avant l’adaptabilité de PowerShell.
Utilisation du cmdlet Split-Path
pour obtenir l’emplacement actuel du script PowerShell
Avant PowerShell 3, il n’y avait pas de meilleure façon de consulter la propriété MyInvocation.MyCommand.Definition
en utilisant le cmdlet Split-Path
.
Le but principal d’utiliser Split-Path
avec $global:MyInvocation
est d’extraire le chemin du répertoire du script PowerShell en cours d’exécution. Cela est particulièrement utile lorsque les scripts doivent interagir avec d’autres fichiers ou répertoires situés au même emplacement que le script ou lorsque le comportement du script dépend de son emplacement.
$scriptDirectory = Split-Path -Parent $MyInvocation.MyCommand.Definition
Write-Host "Current script location: $scriptDirectory"
Dans cet exemple, nous utilisons Split-Path
avec le paramètre -Parent
pour isoler le composant répertoire du chemin complet du script en cours d’exécution. Ce chemin est obtenu à partir de $MyInvocation.MyCommand.Definition
.
Le chemin du répertoire résultant est stocké dans la variable $scriptDirectory
.
Enfin, nous utilisons Write-Host
pour afficher ce chemin du répertoire, fournissant une vue claire et immédiate de l’emplacement actuel du script. Cette méthode est non seulement efficace mais assure également la compatibilité entre différentes versions de PowerShell.
Sortie :
Il convient de noter que cela ne fonctionnera que si vous incluez la syntaxe ci-dessus dans un fichier PowerShell enregistré (.ps1
). Exécuter la syntaxe ci-dessus dans la ligne de commande renverra une exception Null
.
Il est également à 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 erreur 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 de là, vous pouvez obtenir l’emplacement actuel du script.
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 répertoire du fichier ou du module actuel.
La variable $PSScriptRoot
contient le chemin du répertoire du script en cours d’exécution. Cette variable automatique est incroyablement utile pour créer des scripts portables où le codage de chemins n’est pas pratique.
C’est particulièrement pratique lorsque vos scripts doivent charger des fichiers ou des modules qui se trouvent dans le même répertoire que le script lui-même.
Write-Host "The current script is located in: $PSScriptRoot"
Dans notre script, nous utilisons le cmdlet Write-Host
pour imprimer la valeur de $PSScriptRoot
. Cette variable contient automatiquement le chemin complet vers le répertoire où se trouve le script.
En invoquant Write-Host
, nous veillons à ce que le chemin soit affiché dans la console PowerShell. Cette approche est à la fois facile et efficace, rendant le script polyvalent pour divers environnements et scénarios.
Sortie :
Obtenir le 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 du script, il ne serait pas inutile 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 trouver 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.
$currentScriptLocation = $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath('.\')
Write-Host "Current script location: $currentScriptLocation"
Dans cet exemple, nous utilisons $ExecutionContext
pour acquérir l’emplacement du script actuel. En appelant la méthode GetUnresolvedProviderPathFromPSPath
avec le paramètre '.\'
, nous demandons effectivement à PowerShell de traduire le répertoire actuel (représenté par '.\'
) en un chemin complet.
Le résultat est stocké dans la variable $currentScriptLocation
, que nous affichons ensuite à l’aide de Write-Host
. Cette méthode est particulièrement robuste, car elle ne dépend pas de la façon dont le script est exécuté et fonctionne dans différentes versions de PowerShell.
Sortie :
Cependant, si vous exécutez la dernière version de Windows PowerShell, un cmdlet séparé a été introduit pour faciliter les choses. Nous pouvons utiliser le cmdlet Get-Location
et appeler la propriété Path
pour obtenir le répertoire de travail actuel du script.
$currentDirectory = (Get-Location).Path
Write-Host "Current directory: $currentDirectory"
Dans le code fourni, nous utilisons d’abord le cmdlet Get-Location
pour récupérer l’objet d’emplacement actuel. Nous accédons ensuite à sa propriété Path
pour obtenir le répertoire actuel sous forme de chaîne, que nous stockons dans la variable $currentDirectory
.
Enfin, nous utilisons Write-Host
pour afficher cette information. Cette méthode est hautement efficace pour les scripts qui doivent connaître leur contexte d’exécution en termes d’emplacement de répertoire.
Sortie :
Dans PowerShell, pwd
est un alias pour le cmdlet Get-Location
. Le cmdlet Get-Location
récupère le répertoire de travail actuel de la session PowerShell, ce que fait exactement la commande traditionnelle pwd
(print working directory) dans les systèmes similaires à Unix.
PowerShell, en gardant à l’esprit sa flexibilité et sa compatibilité, fournit ces alias pour faciliter l’utilisation de commandes similaires par les utilisateurs familiers avec d’autres environnements de shell (comme Unix ou Linux) dans PowerShell.
$currentDirectory = pwd
Write-Host "Current directory: $currentDirectory"
Dans cet exemple, nous utilisons la commande pwd
pour obtenir l’objet d’emplacement actuel, qui est ensuite stocké dans la variable $currentDirectory
. En utilisant Write-Host
, nous affichons le chemin du répertoire actuel dans la console.
Cette méthode est particulièrement simple et ne nécessite aucune syntaxe complexe ni paramètres supplémentaires. C’est un moyen rapide et fiable de déterminer le répertoire à partir duquel le script est exécuté.
Sortie :
Conclusion
Cet article a fourni une exploration approfondie de diverses méthodes pour déterminer l’emplacement actuel d’un script PowerShell, chacune adaptée à différentes versions de PowerShell et contextes de scripting. Du cmdlet Split-Path
adapté pour les versions antérieures à la variable automatique $PSScriptRoot
dans les versions ultérieures, le guide garantit une pertinence pour un large éventail d’utilisateurs de PowerShell.
De plus, l’utilisation de $ExecutionContext
et du cmdlet Get-Location
offre des alternatives robustes et simples, respectivement, tandis que l’alias pwd
présente une option familière pour les utilisateurs venant de différents parcours de scripting. Ce guide complet non seulement améliore la portabilité et la fiabilité des scripts mais souligne également la nature polyvalente de PowerShell.
Armés de ces techniques, les rédacteurs de scripts et les administrateurs système sont mieux équipés pour gérer les dépendances de chemin de fichier, rendant leurs scripts plus adaptables et efficaces dans divers environnements. En fin de compte, comprendre ces méthodes est fondamental pour maîtriser le scripting PowerShell et optimiser la fonctionnalité des scripts à travers différentes plateformes et scénarios.
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn