Короткий ответ

Зафиксируйте какой KB и что именно сломалось (служба, драйвер, LDAP, RDP). Сверьте зависимости роли: AD DS не откатывают как IIS. Откат — wusa /uninstall или DISM Remove-Package на конкретном пакете, после backup/снимка по правилам роли. Не выключайте Windows Update навсегда и не сносите Servicing Stack, чтобы «пролез откат».

На DC сначала состояние каталога, потом uninstall.

Симптомы и как отличить

  • Корреляция по времени: Setup / Windows Update Agent, затем Stopped у роли.
  • Один сервер фермы после WSUS-группы, соседи зелёные — почти наверняка пакет.
  • Диск забит CBS/WinSxS — сначала место.

Не путайте с «служба не стартует» без патча: тогда статья про SCM, не KB.

Возможные причины

  1. Кумулятив ломает конкретный CSE/драйвер/протокол (SMB, RDP, LDAP signing).
  2. Неполный reboot: обновление в Pending, роль в полусостоянии.
  3. Нехватка места в середине обслуживания.
  4. Антивирус держит файлы servicing.
  5. Несовместимый агент (backup, AV, старый SQL) после смены платформы.
  6. Попытка удалить уже superseded пакет — uninstall недоступен.

Диагностика

Get-HotFix | Sort-Object InstalledOn -Descending | Select-Object -First 15 HotFixID, Description, InstalledOn
Get-WinEvent -LogName Setup -MaxEvents 30 | Format-Table TimeCreated, Id, Message -Wrap
Get-WindowsPackage -Online | Where-Object { $_.PackageState -eq 'Installed' -and $_.ReleaseType -match 'Update' } |
  Select-Object -First 20 PackageName, InstallTime

Журнал обновлений:

Get-WinEvent -ProviderName Microsoft-Windows-WindowsUpdateClient -MaxEvents 25 |
  Format-Table TimeCreated, Id, Message -Wrap
Get-Service | Where-Object Status -ne 'Running' | Where-Object StartType -eq 'Automatic'

Связь «KB → сервис»: время InstalledOn vs Event 7000 у службы. Зависимости роли:

Get-WindowsFeature | Where-Object Installed
Get-Service NTDS, DFSR, TermService, W3SVC -ErrorAction SilentlyContinue

Решение

Сценарий A. Роль не-AD, пакет удаляется

wusa.exe /uninstall /kb:5060000 /norestart

Подставьте реальный HotFixID с проблемного узла, не пример. Затем контролируемый reboot.

DISM, если wusa отказывается:

Get-WindowsPackage -Online | Where-Object PackageName -match 'KB5060000'

Remove-Package только для имени из этого списка.

Сценарий B. Пакет superseded / SSU

Если uninstall недоступен: изоляция узла (вывести из NLB/фермы), не удаление SSU. Откат образа из backup, не «таймер Windows» с форумов.

Сценарий C. DC / Exchange-подобные роли

  1. Второй DC обслуживает логон.
  2. Backup system state актуален.
  3. Откат по документации роли; снимок VM на DC — только если вы понимаете USN rollback.
  4. После возврата — repadmin /replsummary, dcdiag.

Сценарий D. Изоляция без отката

WSUS: снимите апрув, целевая группа «hold». На узле пауза качества. Это не замена патч-менеджмента, окно на совместимость драйвера/агента.

Сценарий E. Ферма, пилот и откат одного узла

Если сломался один Session Host / файл-сервер из трёх, выведите его из балансировки до uninstall. Соседние узлы без этого KB подтверждают корреляцию. Не ставьте тот же пакет на оставшиеся «чтобы было одинаково», пока нет фикса вендора или KIR.

Get-HotFix | Sort-Object InstalledOn -Descending | Select-Object -First 8 HotFixID, InstalledOn
Get-WindowsPackage -Online | Where-Object PackageName -match 'KB' |
  Select-Object PackageName, PackageState, InstallTime |
  Sort-Object InstallTime -Descending |
  Select-Object -First 10

Pending reboot: пока есть RebootRequired, второй KB и uninstall дерутся. Доведите reboot, снова снимите службы, потом решайте откат.

На DC смотрите не только wuauserv: после кумулятива иногда не поднимаются NTDS/DFSR из‑за диска или подписи. Тогда путь — статья про службу и диск, не слепой wusa /uninstall всех пакетов за месяц.

Servicing Stack Update удалять нельзя как «обычный KB». Если uninstall кумулятива требует SSU, который уже стоит, откатывайтесь образом/backup, не ломая стек обслуживания.

Как проверить, что проблема устранена

Сервис Running после reboot. Функциональный тест роли (LDAP, RDP, сайт).

Get-HotFix -Id KB5060000 -ErrorAction SilentlyContinue
Get-Service <ИмяРоли>

Соседний узел фермы с тем же KB: либо не ставьте, либо поставьте после фикса вендора. CBS без новых ошибок 20/0x800f0831.

Если не помогло

  • Uninstall откатывается сам: место, AV, повреждённый компонент — DISM RestoreHealth с проверенного источника, не первая попавшаяся ISO другой сборки.
  • Сломался только один драйвер: откат драйвера в Device Manager / pnputil, не всего кумулятива.
  • Pending reboot крутится: Get-ItemProperty pending, не ставить второй KB сверху.
  • Известный KIR (Known Issue Rollback) от Microsoft — штатный путь, если он есть для этого KB; не выдумывать GUID политики.

На DC после неудачного uninstall смотрите NTDS и SYSVOL, не только wuauserv. Если роль жива на втором DC, не seize FSMO из‑за патча. Для IIS/SQL сверьте строки подключения и сертификаты: кумулятив мог отключить старый протокол TLS, это не «нужно выключить обновления». Зафиксируйте HotFixID в тикете и в WSUS: повторный апрув той же группы снова сломает пилот.

Профилактика

  • Кольца: пилот, потом DC, потом ферма.
  • Снимок/backup по типу роли до патча.
  • Место на C: и чеклист AD.
  • Читать known issues конкретного кумулятива до апрува WSUS.
  • Агенты backup/AV в матрице совместимости с годом ОС.
  • Пилотное кольцо держите минимум неделю на одном не-DC, прежде чем катить кумулятив на DC01. Запись HotFixID и времени reboot в заявке экономит час на следующем инциденте.

FAQ

Можно ли удалить все обновления за месяц пакетом?

Нет. Точечный KB и проверка роли. Массовый uninstall оставляет servicing в каше.

KB в Get-HotFix нет, а Windows Update пишет Success?

Смотрите Get-WindowsPackage / история Update Orchestrator. Не все пакеты видны как HotFixID.

Безопасно ли RestoreHealth из интернета на изолированном DC?

Источник должен быть доверенный. На изолированном контуре — ISO той же сборки. Не смешивайте 2019 и 2022.

Отключить обновления на год?

Нет. Изолируйте проблемный KB, держите SSU и остальные патчи.

Пример KB5060000 в команде — ставить его?

Нет, это плейсхолдер. Берите идентификатор с узла. Не выдумывайте CVE и номера «с памяти». После отката проверьте роль тем же функциональным тестом, что и до патча.