我在更新函数中的全局变量时遇到了问题。我找到了以下文章,看起来很有希望:
Variable scoping in PowerShell
但是,我发现他发布的内容与我看到的输出相符。这是他的代码:
$array=@("g")
function foo()
{
$array += "h"
Write-Host $array
}
& {
$array +="s"
Write-Host $array
}
foo
Write-Host $array
他的结果:
g s
g h
g
但是......我在PowerShell 5.0上的结果是:
s
h
g
添加$global:array += "s"
的建议解决方案:
g
h
g
我缺少什么,如何纠正?如果$ global:不起作用,如何在函数内更新函数外的变量?
答案 0 :(得分:3)
数组在script
范围内声明,而不是全局。将数组声明为全局变量:
$global:array=@("g")
或使用脚本范围来更新它:
$script:array += "h"
我建议使用后者,因为只使用脚本需要使用全局变量有点多余。