重新提交挂职(开始工作)

时间:2012-03-16 23:23:24

标签: powershell start-job

我正在启动多个作业(使用Start-Job),在我的脚本结束时,我会检查作业是否运行超过X秒。然后,我想要运行Running和Failed作业并重新启动它们,直到它们成功。

作业以我想要运行的服务器命名(例如使用Test-Connection)。 我的问题是我无法弄清楚如何重新提交工作!

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

亲切的问候:)

1 个答案:

答案 0 :(得分: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
}