在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
)
谢谢。
答案 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