如何修改 Start-Job
中的变量?此代码输出 0
,似乎是因为变量是按值传递的:
$vara = "0"
$j = start-job -ScriptBlock {
$args[0] = "1"
} -ArgumentList $vara
wait-job $j > $null
receive-job $j
Write-Host $vara ## => "0"
如何通过引用传递参数(因此输出 1
)?
最佳答案
修改作业中的任何内容时完全超出了范围。没有什么会神奇地填充到您当前的 session 中。
你可以这样做:
$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
关于powershell - 如何在 Start-Job 中通过引用传递变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52970853/