2013-10-08 86 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分钟,我没有看到其他方式来强制工作停止更快。