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 に答える