Les scripts PowerShell appelés dans un autre script auront accès aux variables du script parent, mais toutes les modifications seront perdues lors de leur enregistrement dans la portée locale (en savoir plus about scopes here).
Parent.ps1
$MyVariable = "Foo"
Write-Host "PARENT BEFORE: MyVariable: $MyVariable"
& "$PSScriptRoot\Child.ps1"
Write-Host "PARENT AFTER: MyVariable: $MyVariable"
Child.ps1
Write-Host "CHILD BEFORE: MyVariable: $MyVariable"
$MyVariable = "Bar"
Write-Host "CHILD AFTER: MyVariable: $MyVariable"
Sortie:
PS > .\Parent.ps1
PARENT BEFORE: MyVariable: Foo
CHILD BEFORE: MyVariable: Foo
CHILD AFTER: MyVariable: Bar
PARENT AFTER: MyVariable: Foo
Si vous utilisez-sourcing de points (.
) pour appeler l'enfant-script, il s'exécutera dans la portée du script parent, qui apportera des modifications variables dans le script enfant visible pour t le parent. Ex:
Parent.ps1
$MyVariable = "Foo"
Write-Host "PARENT BEFORE: MyVariable: $MyVariable"
. "$PSScriptRoot\Child.ps1"
Write-Host "PARENT AFTER: MyVariable: $MyVariable"
Sortie:
PARENT BEFORE: MyVariable: Foo
CHILD BEFORE: MyVariable: Foo
CHILD AFTER: MyVariable: Bar
PARENT AFTER: MyVariable: Bar
Lire sur le 'sourcing point' dans Powershell, je pense que c'est ce que vous êtes après – arco444
Merci. Dot sourcing était ce que je cherchais. – MikePro