2

我创建了一个 powershell 作业,我想将它的运行时间限制为 10 秒。所以我使用了 Wait-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
    }
}

谢谢

4

1 回答 1

2

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

于 2013-10-08T17:53:55.497 回答