我很难从作业中获得任何输出 - 以下代码出了什么问题?
$test = {
DIR
}
$mjob = Start-Job -ScriptBlock {$test}
while (Get-Job -State Running){}
Receive-Job -Job $mjob -OutVariable $otest
Write-Host($otest)
答案 0 :(得分:6)
当您使用-OutVariable
时,仅提供变量的名称,例如:
... -OutVariable otest
除非$otest
碰巧包含要将输出保存到的变量的名称。
其他一些建议。 $test
代表一个scriptblock,因此您无需在其周围添加{}
。而不是等待使用while循环,只需使用Wait-Job
例如:
$test = { get-childitem }
$job = Start-Job $test
Wait-Job $job
Receive-Job $job -OutVariable otest
$otest
答案 1 :(得分:4)
您可以使用管道等待作业完成,然后接收其结果。将脚本块传递给ScriptBlock参数时,请务必删除大括号,否则您将创建嵌套的scriptblock:
$test = { DIR }
Start-Job -ScriptBlock $test | Wait-Job | Receive-Job