从作业中获取输出

时间:2012-10-15 14:30:40

标签: powershell

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

$test = {
    DIR
}

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

Write-Host($otest)

2 个答案:

答案 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