Есть команда, которая (на блоках 2008) выдает исключение из-за ограничения буфера.
По сути, скрипт останавливает WAUA, сбрасывает SoftwareDistribution, затем обращается к нему, чтобы восстановить SD и проверить наличие обновлений для WSUS затем проверяет, чтобы предупреждения в WSUS прекратились.
Я хочу, чтобы указанная строка c повторялась, если генерируется исключение, до тех пор, пока оно не завершится без исключения, тогда мы можем сказать, чтобы оно сообщало в WSUS чтобы очистить его.
Stop-Service WUAUSERV
Remove-Item -Path C:\WINDOWS\SoftwareDistribution -recurse
Start-Service WUAUSERV
GPUpdate /force
WUAUCLT /detectnow
sleep 5
## This is the command I'd like to loop, if possible, when an exception is thrown ##
$updateSession = new-object -com "Microsoft.Update.Session"; $updates=$updateSession.CreateupdateSearcher().Search($criteria).Updates
WUAUCLT /reportnow
Любая помощь будет оценена. Все, что я смог найти, - это как создать собственное исключение, а не как его обработать, когда выдается исключение, и повторять до тех пор, пока оно не завершится без ошибки.
Редактировать:
Затем, исходя из приведенного ниже ответа, я хотел бы, чтобы оно было написано, чтобы оно продолжало проверять, пока не выполнится успешно, а затем сообщит об этом обратно?
Stop-Service WUAUSERV
Remove-Item -Path C:\WINDOWS\SoftwareDistribution -recurse
Start-Service WUAUSERV
GPUpdate /force
WUAUCLT /detectnow
sleep 5
while(-not $?) {$updateSession = new-object -com "Microsoft.Update.Session"; $updates=$updateSession.CreateupdateSearcher().Search($criteria).Updates}
WUAUCLT /reportnow