Групповое удаление обновлений Windows в домене

Все об администрировании Windows NT/2000/2003/2008/2012 Server (в т.ч. R2) серверов. Групповые политики, домены, безопасность и пр. То, чего не найдешь в бескрайних просторах Интернета. Решения тех проблем, которые не решаются типовыми ответами, которые можно получить в техподдержке Майкрософта - а именно: переустановить продукт или купить какой-ть другой лицензионный диск.


Модератор: UncleFather

Аватара пользователя
UncleFather
Site Admin
Сообщения: 1505
Зарегистрирован: 17 авг 2004 16:20, Вт
Контактная информация:

Групповое удаление обновлений Windows в домене

Сообщение UncleFather »

Проблема:

Имеется домен под управлением серверной OS Microsoft Windows 2003 и выше. После установки очередного обновления MS Windows с сервера WSUS, компьютеры стали вести себя неадекватно. Теперь это сбойное удаление нужно удалить со всех компьютеров, на которые оно успело установиться.

Для усложнения задачи предположим, что это обновление не поддерживает автоматическое удаление через сервер WSUS, и что в домене имеются рабочие станции с операционными системами, начиная с Microsoft Windows XP и выше.

Решение:

  1. В оснастке WSUS снимаем одобрение на установку этого обновления и устанавливаем ему статус «Отклонить», для того, чтобы это обновление больше не устанавливалось на другие компьютеры.

  2. В групповых политиках создаем Logon скрипт (сценарий, который будет выполняться при входе пользователя) следующего содержания:

    Код: Выделить всё

    @Echo Off
    Set KbNum=3013455
    REM Удаление обновления KB%KbNum%, искажающего шрифты
    ver | find /i "5.1"
    if %errorlevel% == 0 (%windir%\$NtUninstallKB%KbNum%$\spuninst\spuninst.exe /quiet /norestart) Else (wusa.exe /quiet /uninstall /kb:%KbNum% /promptrestart)

    Пример выполнен для обновления KB3013455, поэтому для удаления желаемого обновления нужно во второй строке сценария Set KbNum=3013455 заменить номер обновления 3013455 на свой.

    Этот скрипт предназначен для MS Windows XP и выше. Поскольку, в Windows XP утилиты wusa.exe еще не было, то сначала выполняется определение версии операционной системы, и, если установлена XP-шка, то выполняется команда %windir%\$NtUninstallKB%KbNum%$\spuninst\spuninst.exe /quiet /norestart, которая вызывает в тихом режиме (без запросов к пользователю) деинсталлятор (утилиту удаления) (не)нужного нам обновления, непосредственно из папки, где создается резервная копия на случай отката этого самого обновления.

    Если же установлена ОС выше MS Windows XP, то ее тихое (без запросов к пользователю) удаление производится с помощью встроенной утилиты wusa.exe командой wusa.exe /quiet /uninstall /kb:%KbNum% /promptrestart

Теперь, после следующей перезагрузки рабочих станций, этот скрипт применится и ненужное обновление будет удалено. Если обновление требует перезагрузки, то изменения в системе после отката обновления можно будет увидеть после еще одной перезагрузки.

События удаления обновлений фиксируются в системных журналах. Для Windows XP - в журнале «Система» создается событие от источника NtServicePack с кодом (EventID) 4382 и содержимым вида:

KB3013455 для Windows XP удален с этого компьютера, восстановлена предыдущая конфигурация Windows XP.

Для MS Windows Vista и выше, событие фиксируется в журнале «Установка», от источника WUSA с кодом (EventID) 7 и содержимым вида:

Обновление Windows «Обновление для системы безопасности Windows XP (KB3013455)» было успешно удалено. (Командная строка: «wusa.exe /quiet /uninstall /kb:3013455 /promptrestart»)


Alexander A. Manaeff©

Понравилась статья? Будем крайне признательны за репосты в соцсетях! Материально поддержать проект можно здесь

Мои странички:
ВКонтакте
Одноклассники
Youtube
Facebook
Instagram

Изображение
Изображение
Изображение
Изображение