我喜欢C#比PS好多了,但这次我被迫写了一个脚本...... 我需要从函数内部改变“全局”变量,而不将变量作为参数传递。它甚至可能吗? 这是一个摘要:
$a = 0
$b = 0
$c = 0
function Increment($var1, $var2)
{
$a = $var1
$b = $var2
$c++
}
与PS中的C#不同,函数变量是功能范围限制,如果按上述方法使用,它们在函数范围之外保持不变。如何通过引用来访问脚本变量?
答案 0 :(得分:2)
如果您确实需要通过引用进行修改,可以使用[Ref]
,例如:
$a = 1
function inc([Ref] $v) {
$v.Value++
}
inc ([Ref] $a)
$a # outputs 2
答案 1 :(得分:2)
尝试使用PowerShell全局变量定义:
$global:a = 0
$global:b = 0
$global:c = 0
function Increment($var1, $var2)
{
$global:a = $var1
$global:b = $var2
$global:c++
}