Можем ли мы добавить максимальное время ожидания завершения процесса? - PullRequest
0 голосов
/ 01 апреля 2019

Есть ли способ установить таймер для процесса, который будет выполнен? Я имею в виду, что если у меня есть список компьютеров, я запускаю команду 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 ]

1 голос
/ 01 апреля 2019

возможно Wait-Job или Wait-Action может помочь.

0 голосов
/ 01 апреля 2019

Если вы используете командлет Start-Process для запуска процесса (вы не упомянули об этом), вы можете подождать некоторое время, используя что-то вроде этого:

$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"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...