1

我很难从作业中获得任何输出 - 以下代码有什么问题?

$test = {
    DIR
}

$mjob = Start-Job -ScriptBlock {$test}
while (Get-Job -State Running){}
Receive-Job -Job $mjob -OutVariable $otest

Write-Host($otest)
4

2 回答 2

7

当您使用时-OutVariable仅提供变量的名称,例如:

... -OutVariable otest

除非$otest碰巧包含要将输出保存到的变量的名称。

其他一些建议。 $test代表一个脚本块,所以你不需要把{}它放在周围。而不是等待使用while循环,只需使用Wait-Job例如:

$test = { get-childitem }
$job = Start-Job $test
Wait-Job $job
Receive-Job $job -OutVariable otest

$otest
于 2012-10-15T14:43:21.190 回答
4

您可以使用管道等待作业完成,然后接收其结果。当您将脚本块传递给 ScriptBlock 参数时,请确保删除大括号,否则您将创建一个嵌套的脚本块:

$test = { DIR }
Start-Job -ScriptBlock $test | Wait-Job | Receive-Job
于 2012-10-15T17:24:41.627 回答