2017-10-03 16 views
0

スクリプトブロックを実行する方法を探しています。の後に例外または終了書き込みエラーが発生しました。Powershellは例外時にスクリプトブロックを実行します

基本的に、スローまたは書き込みエラーが発生した場合は、最も高いスコープ(メイン)ですべてのPSSessionsを終了し、get-job |実行を停止する前にremove-jobを実行します。私は$ ErrorActionPreference =「停止」に設定している場合、これは可能である正確場合

イムわからない

これは私が答えを待っている間、思い付いたものです..しかし、病気誰かが持っている包み、この質問を続けますより良い解決策:

#Wait on feedback from children 
try{ 
    While (Get-Job -State "Running") 
    { 
     Get-Job | Receive-Job 
     Start-Sleep 2 
    } 
    Get-Job | Receive-Job 
} finally { 
    Get-PSSession | Remove-PSSession 
    Get-Job | Remove-Job 
} 

ありがとう!

+0

例を示してください。 – ArcSet

答えて

1

ジョブはデフォルトでホストにエラーを送信しません。手動でエラーを投げる必要があります。

#Wait on feedback from children 
try{ 
    While (Get-Job -State "Running") 
    { 
     if (Get-Job -State 'Failed'){ throw 'Job failed.' } 
     Get-Job | Receive-Job 
     Start-Sleep 2 
    } 
    Get-Job | Receive-Job 
} finally { 
    Get-PSSession | Remove-PSSession 
    Get-Job | Remove-Job 
} 

エラーの詳細については、ジョブオブジェクトのJobStateプロパティを確認してください。

関連する問題