ジョブからの出力を取得するのに惨めに失敗しています。次のコードの何が問題になっていますか?
$test = {
DIR
}
$mjob = Start-Job -ScriptBlock {$test}
while (Get-Job -State Running){}
Receive-Job -Job $mjob -OutVariable $otest
Write-Host($otest)
ジョブからの出力を取得するのに惨めに失敗しています。次のコードの何が問題になっていますか?
$test = {
DIR
}
$mjob = Start-Job -ScriptBlock {$test}
while (Get-Job -State Running){}
Receive-Job -Job $mjob -OutVariable $otest
Write-Host($otest)
使用する場合-OutVariable
は、変数の名前のみを指定します。例:
... -OutVariable otest
$otest
出力を保存する変数の名前が含まれていない限り。
他のいくつかの提案。 $test
スクリプトブロックを表すので、{}
前後に配置する必要はありません。while ループを使用して待機するのではなく、次のように使用しますWait-Job
。
$test = { get-childitem }
$job = Start-Job $test
Wait-Job $job
Receive-Job $job -OutVariable otest
$otest
パイプラインを使用して、ジョブが終了するのを待ってから、その結果を受け取ることができます。スクリプト ブロックを ScriptBlock パラメーターに渡すときは、中かっこを必ず削除してください。そうしないと、ネストされたスクリプト ブロックが作成されます。
$test = { DIR }
Start-Job -ScriptBlock $test | Wait-Job | Receive-Job