3

我正在开始几个工作(使用 Start-Job),在我的脚本结束时,我检查这些工作是否已经运行超过 X 秒。然后,我想接受 Running 和 Failed 作业并重新启动它们,直到它们成功。

这些作业以我要运行的服务器命名(例如 Test-Connection)。我的问题是我不知道如何重新提交工作!

get-job | where { $_.state -eq "running" } | remove-job -force | start-job -ScriptBlock { echo $_ }
  • 如何将失败/挂起的作业的名称传递给我正在开始的新作业?
  • 在继续 Start-Job 之前,如何等待 remove-job 完成?

亲切的问候:)

4

1 回答 1

3

重新启动失败作业的一种方法:

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 回答