我创建了一个Powershell作业,我想将其运行时间限制为10秒。所以我使用了等待作业命令,如果它超时,我会执行停止作业命令。问题是停止作业命令大约需要 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
}
}
谢谢
我在停止作业上看不到-Force
参数。 一种选择是让作业返回它在$pid
中运行的 PowerShell 进程 ID 作为初始输出。 您可以使用该 pid 在 Powershell 上停止进程.exe为该后台作业启动。 这很苛刻,但如果您不想等待 2 分钟,我没有看到其他方法可以迫使工作更快地停止。