← на главную
3 заметки с тегом

WSUS

КЭНК: тихое удаление обновления Windows по номеру KB

Задача: тихо удалить с хоста обновление Windows по номеру KB.

Какое-то время проблема легко решалась через wusa.exe /uninstall /kb:XXXXXX /quiet, но теперь в Windows 10 команда с ключом quiet просто игнорируется, а без ключа — задает много вопросов пользователю, что ожидаемо, но не подходит для решения задачи.

В интернетах быстро гуглится способ, который хорош, но не универсален. Способ рассчитывает на то что KB будет упомянута в имени пакета для DISM, а это бывает не всегда — в примере ниже у двух последних обновлений номера KB в имени пакета нет.

Ситуацию усложняет то, что в разных локалях ОС команда dism выдает информацию на разных языках, да к тому же не структурированным объектом — а строкой. К счастью, из строки все же можно выцепить имя пакета, а по нему — запросить подробную информацию (тоже строкой), где номер KB есть (судя по моим тестам) всегда:

Итоговое решение задачи такое:

  • смотрим список всех установленных обновлений и выдергиваем имена пакетов
  • по каждому пакету смотрим расширенное описание и ищем в нём искомый номер KB
  • если в описании найден нужный номер KB — пакет по его имени отправляется на деинсталляцию через DISM.exe /Online /Remove-Package /PackageName:$sFoundPackageName /quiet /norestart

Короткий сниппет, иллюстрирующий подход:

$sKBNumber = "4578968"
$aUpdts = dism /online /get-packages | ? {$_.Contains("Package_for")} | %{($_.Split(":"))[1].Trim()}
foreach ($sUpdate in $aUpdts) {
	$sInfo = (dism /online /get-packageinfo /packagename:$sUpdate) -join(", ")
	if ($sInfo.Contains($sKBNumber)) {
		write-host "Found package $sUpdate for KB number $sKBNumber"
		# uncomment below to uninstall package
		# DISM.exe /Online /Remove-Package /PackageName:$sUpdate /quiet /norestart
	}
}

КЭНК! Слава роботам!

 Нет комментариев    7   1 мес   PowerShell   WSUS   КЭНК

Cекреты старца Всасиуса — 2021

Краткий дайджест открытий и новинок в области обновлений Windows за прошедшее десятилетие

  • Отличный способ обнаруживать клиентов с дублированным SusClientIds через логи на сервере (хорошо применимо в сетях и инфраструктурах, где сбор данных скриптами и удалёнными запросами перекрыт бикоз оф эта ваша сесурити) https://ms07.de/blog/?p=277
  • Windows Update MiniTool и PSWindowsUpdate — гуевый и консольный способы принудительно ставить обновления, в том числе из интернетов в обход WSUS
  • Современные политики уведомлений в Windows 10 — можно мягко но настойчиво задалбывать пользователя просьбами о ребуте, и принудительно перезапускаться через N дней. Вебдванольно и градиентно, как в лучших домах.

Вроде прогресс, а вроде те же грабли что и в 2010-м.

Cекреты старца Всасиуса

... а ежели подопечный твой занемог, и припадать к живительной благодати wsus отказывается, а ты к бесовским заклинаниям клонирования обращался до того, то снеси ветку реестра WindowsUpdate в HKLM, перезапусти службу, и дай сначала gpupdate /force, а потом и wuauclt.exe /detectnow /resetauthorization. ...

... а ежели и это не игоняет хворобу, то переустанови wsus update agent свежий из житницы благословенной что умудренному сединами Биллу принадлежит, да тайный ключ /wuforce не забудь ...

... а ежели и тогда издыхает бедолага, то проверь чтоб windows installer был установлен, да версии последней, что в тех же веб-чертогах микрософтовых хранится ...

... а коль совсем ничего не помогает, то призови на помощь WSUS Client Diagnostic Tool, ибо силой великою обладает он, и знаниями тайными поделится, да обрати внимание на проксевые настройки любомудрые ...

... ну а если совсем ничего не получается, то посыпь клавиатуру толчеными мышиными хвостами, да окропи чивасригалом восемнадцатилетним, поелику ничто уже ему не поможет, ибо неисповедимы пути виндовсапдейтовские ...