Повторно повесить работу (начало работы)

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

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

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

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

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
}
Другие вопросы по тегам