PowerShell-Skripte, die in einem anderen Skript aufgerufen werden, haben Zugriff auf die Variablen des übergeordneten Skripts, aber alle Änderungen gehen verloren, da sie im lokalen Gültigkeitsbereich gespeichert werden (lesen Sie mehr 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"
Ausgang:
PS > .\Parent.ps1
PARENT BEFORE: MyVariable: Foo
CHILD BEFORE: MyVariable: Foo
CHILD AFTER: MyVariable: Bar
PARENT AFTER: MyVariable: Foo
Wenn Sie Dot-Sourcing (.
) das Kind-Skript aufrufen, es wird im Bereich des übergeordneten Skripts ausgeführt, wodurch Variablenänderungen im untergeordneten Skript für t sichtbar gemacht werden er Elternteil. Ex:
Parent.ps1
$MyVariable = "Foo"
Write-Host "PARENT BEFORE: MyVariable: $MyVariable"
. "$PSScriptRoot\Child.ps1"
Write-Host "PARENT AFTER: MyVariable: $MyVariable"
Ausgang:
PARENT BEFORE: MyVariable: Foo
CHILD BEFORE: MyVariable: Foo
CHILD AFTER: MyVariable: Bar
PARENT AFTER: MyVariable: Bar
Informieren Sie sich über 'dot-Sourcing' in Powershell, ich denke, das ist, was Sie nach – arco444
Danke. Dot Sourcing war, was ich gesucht habe. – MikePro