Appeler un script PowerShell PS1 depuis un autre script PS1 dans PowerShell ISE
Pour exécuter un script dans le même répertoire.
Dans PowerShell 3.0 et ultérieur, vous pouvez utiliser la variable automatique $PSScriptRoot :
$PSScriptRoot/myScript1.ps1
Dans PowerShell 1.0 et 2.0, vous devez utiliser cette propriété spécifique :
& "$(Split-Path $MyInvocation.MyCommand.Path)/myScript1.ps1"
La raison pour laquelle vous devez utiliser cela et rien d’autre peut être illustrée avec ce script d’exemple.
## ScriptTest.ps1
Write-Host "InvocationName:" $MyInvocation.InvocationName
Write-Host "Path:" $MyInvocation.MyCommand.Path
Voici quelques résultats.
PS C:\Users\JasonAr> .\ScriptTest.ps1
InvocationName: .\ScriptTest.ps1
Path: C:\Users\JasonAr\ScriptTest.ps1
PS C:\Users\JasonAr> . .\ScriptTest.ps1
InvocationName: .
Path: C:\Users\JasonAr\ScriptTest.ps1
PS C:\Users\JasonAr> & “.\ScriptTest.ps1”
InvocationName: &
Path: C:\Users\JasonAr\ScriptTest.ps1
Dans PowerShell 3.0 et ultérieur, vous pouvez utiliser la variable automatique $PSScriptRoot :
## ScriptTest.ps1
Write-Host "Script:" $PSCommandPath
Write-Host "Path:" $PSScriptRoot
PS C:\Users\jarcher> .\ScriptTest.ps1
Script: C:\Users\jarcher\ScriptTest.ps1
Path: C:\Users\jarcher