Comment obtenir l'emplacement actuel du script PowerShell

  1. Utilisation du 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. Obtenir le répertoire de travail dans Windows PowerShell pour obtenir l’emplacement actuel du script PowerShell
  4. Conclusion
Comment obtenir l'emplacement actuel du script PowerShell

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 :

obtenir l’emplacement actuel du script PowerShell - sortie 1

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 l’emplacement actuel du script powershell - sortie 2

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 :

obtenir l’emplacement actuel du script powershell - sortie 3

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 :

obtenir l’emplacement actuel du script powershell - sortie 4

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 :

obtenir l’emplacement actuel du script PowerShell - sortie 5

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.

Vous aimez nos tutoriels ? Abonnez-vous à DelftStack sur YouTube pour nous aider à créer davantage de tutoriels vidéo de haute qualité. Abonnez-vous
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