Повторить повесить работу (начало работы) - PullRequest
3 голосов
/ 17 марта 2012

Я запускаю несколько заданий (с помощью Start-Job) и в конце своего сценария я проверяю, выполнялись ли задания более X секунд. Затем я хотел бы выполнить задания «Выполнено» и «Сбой» и перезапустить их, пока они не будут выполнены.

Задания названы в честь сервера, с которым я хотел бы работать (например, с Test-Connection). Моя проблема в том, что я не могу понять, как повторно отправить работу!

get-job | where { $_.state -eq "running" } | remove-job -force | start-job -ScriptBlock { echo $_ }
  • Как передать имя невыполненных / зависших заданий на новое, которое я запускаю?
  • Как я могу дождаться окончания удаления, прежде чем продолжить работу?

С уважением:)

1 Ответ

3 голосов
/ 17 марта 2012

Один из способов перезапустить сбойные задания:

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
}
...