Powershell,Stop-Job需要太长时间

时间:2013-10-08 12:47:41

标签: multithreading powershell timeout jobs

我创建了一个PowerShell作业,我想将它的运行时间限制为10秒。 所以我使用了Wait-Job命令,如果超时,我执行一个Stop-Job命令。 问题是Stop-Job命令大约需要2分钟。 我该如何解决它并立即停止工作?

While($hasTimeFromNTP -eq $false)
{
    Write-Host "Start get time from NTP" -ForegroundColor Yellow
    Start-Job -Name GetNTPTime -ScriptBlock $getTimeFromNtp | Out-Null
    $result = Wait-Job GetNTPTime -Timeout 10
    if($result -ne $null)
    {
        $NTPTime = Receive-Job GetNTPTime
        $hasTimeFromNTP = $true
    }
    else
    {
        Write-Host "GetTimeFromNTP timed out"
        Stop-Job GetNTPTime
        Remove-Job GetNTPTime -Force
    }
}

由于

1 个答案:

答案 0 :(得分:1)

我在Stop-Job上看不到-Force参数。一个选项是让Job返回它在$pid中运行的PowerShell进程ID作为初始输出。您可以使用该pid对Powershell.exe进行停止处理,为该后台作业启动。这很苛刻,但如果你不想等待2分钟,我就没有看到其他方法迫使这项工作更快停止。