入门,如何通过引用传递参数?

时间:2018-10-24 13:55:47

标签: powershell parameters pass-by-reference

在Powershell中,如何通过作业修改变量? 这段代码

$vara = "0"

$j = start-job -ScriptBlock {
   $args[0] = "1"
} -ArgumentList $vara

wait-job $j > $null
receive-job $j

Write-Host $vara  ## => "0"

输出0,似乎是因为变量是通过值传递的。

如何通过引用传递参数?(因此,输出1

谢谢。

1 个答案:

答案 0 :(得分:1)

在修改作业中的任何内容时,您完全超出范围。在您当前的会话中,没有什么会神奇地填充。

您可以执行以下操作:

$vara = "0"

$j = start-job -ScriptBlock {
   "1"
} -ArgumentList $vara

wait-job $j > $null
$vara = receive-job $j

Write-Host $vara

如果需要填充很多参数,则可以执行以下操作:

$vara = "0"

$j = start-job -ScriptBlock {
   [pscustomobject]@{
      vara1 = "1"
      vara2 = "0"
    }
} -ArgumentList $vara

wait-job $j > $null
$vara = receive-job $j

Write-Host $vara.vara1