是否可以为要执行的进程设置计时器?我的意思是说,如果我有计算机列表,我正在对它运行一个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)
}
答案 0 :(得分:1)
也许Wait-Job或Wait-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"
}