Appeler un script PowerShell PS1 depuis un autre script PS1 dans PowerShell ISE

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