我正在尝试在Powershell中启动服务。如果服务未在指定的时间限制内启动,则应该终止尝试启动,否则应该像往常一样继续。如何合并超时?
答案 0 :(得分:6)
使用后台作业实现超时非常简单:
$timeout = [Timespan]"0:0:15"
$start = Get-Date
$j = Start-Job -ScriptBLock { Import-Module MyModule; Invoke-MyCommand}
do {
if ($j.JobState -ne 'Running') { break}
$j | Receive-Job
} while (((Get-Date) - $start) -le $timeout)
此代码块将在15秒后超时,但它应该让您开始。基本上: - 跟踪时间 - 开始工作 - 等待它不再运行(它可能已经失败,所以不要等待完成) - 等待时收到结果 - 如果你等了太久就超时
希望这有助于