所以,我在另一个脚本(a.ps1
)中有两个脚本(b.ps1
和c.ps1
)。 c.ps1
只会调用其他两个脚本(a.ps1
& b.ps1
)。如果我在a.ps1
内声明一个全局变量,我想在b.ps1
内使用该全局变量。它是否会起作用,因为两个脚本(a.ps1
和b.ps1
)都在同一个环境中(c.ps1
)?
答案 0 :(得分:1)
据我了解,实际上你只有一个脚本“c”和“a”和“b”作为“c”中的函数。 在这种情况下,答案是:是的,如果在第一个函数“a”中声明变量,则可以在第二个函数“c”中使用它。
答案 1 :(得分:0)
好的,我自己做了测试并且可以说:这取决于你如何从另一个脚本开始。如果使用Start-Process powershell -args "-file a.ps1"
之类的内容,则不会传递全局变量。但是,如果你使用& .\a.ps1
,那就是。例如:
c.ps1:
& .\a.ps1
a.ps1:
$global:TestVariable = "TEST"
& .\b.ps1
b.ps1:
Write-Host "Test variable: [$global:TestVariable]."
Read-Host # for pause
在这种情况下,输出将是:
D:\TEST_123>powershell -file c.ps1
Test variable: [TEST].
正如@David Brabant所提到的,你应该阅读about_scopes man。