在另一个脚本内部调用的PowerShell脚本将有权访问父脚本的变量,但任何修改都将丢失,因为它们保存在本地范围中(请阅读更多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"
输出:
PS > .\Parent.ps1
PARENT BEFORE: MyVariable: Foo
CHILD BEFORE: MyVariable: Foo
CHILD AFTER: MyVariable: Bar
PARENT AFTER: MyVariable: Foo
如果使用点采购(.
)来调用子脚本,它将运行在父脚本的作用域中,该脚本将在子脚本中对t可见的变量进行修改他的父母。例如:
Parent.ps1
$MyVariable = "Foo"
Write-Host "PARENT BEFORE: MyVariable: $MyVariable"
. "$PSScriptRoot\Child.ps1"
Write-Host "PARENT AFTER: MyVariable: $MyVariable"
输出:
PARENT BEFORE: MyVariable: Foo
CHILD BEFORE: MyVariable: Foo
CHILD AFTER: MyVariable: Bar
PARENT AFTER: MyVariable: Bar
在PowerShell中的 '点采购' 读了起来,我觉得这是你以后 – arco444
谢谢。点源是我一直在寻找的。 – MikePro