Завершить часть сценария powershell и продолжить
Я создал скрипт powershell, который считывает ключи реестра удаленных ПК и распечатывает их на html-странице.
Иногда удаленные ПК зависают / зависают и т. Д. Это увеличивает конечную HTML-страницу примерно на 40 секунд для каждого замороженного ПК.
Как я могу определить время только части моего сценария, скажем, 1-2 команды, и если это время становится слишком большим, я прекращаю эту команду и продолжаю сценарий для следующего ПК из массива имен ПК? А может, решение не в сроках, есть другой способ? Спасибо!
Что-то вроде:
$Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('Users', $remote[$i])
+ timer
работает параллельно + if condition
для отсчета таймера. И когда счетчик достигает порога terminate OpenRemoteBaseKey & continue
1 ответ
Выполнить заявление как задание. Контролировать время вне работы. Если работа выполняется дольше, чем вы предпочитаете, убейте ее.
$job = Invoke-Command `
-Session $s
-ScriptBlock { $Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('Users', $remote[$i]) } `
-AsJob `
-JobName foo
$int = 0
while (($job.State -like "Running") -and ($int -lt 3)) {
Start-Sleep -Seconds 1
$int++
}
if ($Job.State -like "Running") { $job | Stop-Job }