3

(Start-Job を使用して) いくつかのジョブを開始しています。スクリプトの最後で、ジョブが X 秒以上実行されているかどうかを確認します。次に、実行中のジョブと失敗したジョブを取得し、成功するまで再起動します。

ジョブの名前は、実行したいサーバーにちなんで付けられます (たとえば、Test-Connection を使用)。私の問題は、ジョブを再送信する方法がわからないことです!

get-job | where { $_.state -eq "running" } | remove-job -force | start-job -ScriptBlock { echo $_ }
  • 失敗した/ハングしたジョブの名前を、開始している新しいジョブにパイプするにはどうすればよいですか?
  • Start-Job を続行する前に、remove-job が完了するのを待つにはどうすればよいですか?

敬具:)

4

1 に答える 1

3

失敗したジョブを再開する 1 つの方法:

Start-Job -Name Foo -ScriptBlock {
    $ErrorActionPreference = 'Stop'
    Get-Item C:\DoesNotExists 
} | Wait-Job > $null

Get-Job | ? { $_.State -eq 'Failed' } | % {
    Start-Job -Name $_.Name -ScriptBlock { iex $args[0] } -ArgumentList $_.Command | Wait-Job | Receive-Job
}
于 2012-03-16T23:51:05.683 に答える