Я просто собрал это, кажется, это работает довольно хорошо:
wuauclt /detectnow
wuauclt /updatenow
:CheckForRequiredRestart
reg query "HKLM\Software\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired" > nul && shutdown -r -t 0
ping 127.0.0.1 -n 61 > nul
goto CheckForRequiredRestart
Просто добавьте его в файл .cmd
в папку «Автозагрузка» и запустите один раз.
(Я не совсем понимаю, какая ОС поддерживает параметр /updatenow
но, похоже, он влияет на Windows 7.)
Я протестировал исправление виртуальной машины Windows 7, и она прошла всю последовательность (что-то вроде 10 перезапусков?). Единственными оставшимися исправлениями были Средство удаления вредоносных программ (которое требует одобрения пользователя) и 4 обновления, которые по умолчанию не проверены. Они небольшие, хотя, после установки произошел перезапуск, а затем пара патчей сверху, и это было сделано.
Он не устанавливает необязательные обновления, поэтому их было несколько, маленьких. Я установил их вручную, и даже не было никаких патчей сверху, так что в целом это было довольно эффективно для простого скрипта. Когда он наконец закончится, вы просто удалите скрипт. Я не знаю простой способ определения полного конца, или я бы сам удалил / удалил расписание.
Мне действительно не нравятся WuInstall или сценарии VBS/PowerShell, так как все они вынуждены иметь дело с расширенным категориальным выбором обновлений, который слишком сложен для этой простой цели. Нет такой простоты, как "Важно", "Рекомендуется" и "Необязательно"; Вы должны явно исключить языки и / или включить много разных категорий, и даже в этом случае это не совсем то же самое, что вы достигли с помощью традиционного цикла установки / перезапуска.
Для исправления не только нечетной системы вы, конечно, должны использовать другой метод, такой как развертывание образа с помощью WDS, использование установки с быстрым движением, WSUS или WSUS Offline Update.