我们可以增加一个最长的时间来等待一个过程完成吗?

时间:2019-04-01 04:25:25

标签: powershell

是否可以为要执行的进程设置计时器?我的意思是说,如果我有计算机列表,我正在对它运行一个Invoke命令,并且其中之一表现出不稳定并且需要永远响应,我可以像计时器一样设置例如2分钟进行检查,如果检查2分钟内未完成,请处理列表中的下一台计算机。

Function Rsrt-Service()
{
    $NLAState = (Get-NetConnectionProfile).IPv4Connectivity

    "Access type : $NLAState"
    if($NLAState -ne 'Internet')
        {
            "Access type : $NLAState"
            "restarting NLA service"
            #Restart-Service  -Name NlaSvc  -Force
            Out-file -FilePath C:\test\abc.txt -Append

        }

}   
foreach ($server in $serversnames)
    {
     Invoke-Command -ComputerName $($server.DNSName)  -ScriptBlock 
     ${Function:Rsrt-Service} -ArgumentList $($server.DNSName) 
    }

2 个答案:

答案 0 :(得分:1)

也许Wait-JobWait-Action可以提供帮助。

答案 1 :(得分:0)

如果您使用Start-Process cmdlet来启动该过程(您没有提及),则可以使用以下方法等待超时时间:

$theProcess = Start-Process -FilePath $runThis -ArgumentList $takeTheseArguments -PassThru

# create a variable to capture the timeout event
$errTimedOut = $null

# wait for a maximum of seconds. After this, $errTimedOut is $null when the process started OK
$theProcess | Wait-Process -Timeout 120 -ErrorAction SilentlyContinue -ErrorVariable errTimedOut

if ($errTimedOut) {
    # do something here to let you know the process timed out
    Write-Warning "Process did not start"
}