从PowerShell函数内部更改脚本变量值

时间:2014-11-06 16:40:31

标签: powershell

我喜欢C#比PS好多了,但这次我被迫写了一个脚本...... 我需要从函数内部改变“全局”变量,而不将变量作为参数传递。它甚至可能吗? 这是一个摘要:

$a = 0
$b = 0
$c = 0
function Increment($var1, $var2)
{
$a = $var1
$b = $var2
$c++
}

与PS中的C#不同,函数变量是功能范围限制,如果按上述方法使用,它们在函数范围之外保持不变。如何通过引用来访问脚本变量?

2 个答案:

答案 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++
}