2013-10-08 101 views
1

我創建了一個powershell作業,我想限制它的運行時間爲10秒。 所以我使用了Wait-Job命令,如果超時,我執行一個Stop-Job命令。 問題是,「停止作業」命令大約需要2分鐘。 我該如何解決並立即停止工作?Powershell,停止作業時間太長

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

我沒有看到停止,作業-Force參數。一種選擇是讓作業返回它在$pid中運行的PowerShell進程ID作爲初始輸出。您可以使用該pid在Powershell.exe的Stop-Process上啓動該後臺作業。這很糟糕,但如果你不想等待2分鐘,我沒有看到其他方式來強制工作停止更快。