将脚本中的全局变量显示为共享相同环境的另一个脚本

时间:2016-08-17 06:44:57

标签: powershell scope

所以,我在另一个脚本(a.ps1)中有两个脚本(b.ps1c.ps1)。 c.ps1只会调用其他两个脚本(a.ps1& b.ps1)。如果我在a.ps1内声明一个全局变量,我想在b.ps1内使用该全局变量。它是否会起作用,因为两个脚本(a.ps1b.ps1)都在同一个环境中(c.ps1)?

2 个答案:

答案 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。