Завершить часть сценария 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 }
Другие вопросы по тегам