Если после установки обновлений Windows возникают ошибки или проблемы, может потребоваться удаление конкретного обновления или всех недавно установленных обновлений. В этой статье мы рассмотрим, как удалить обновления Windows с помощью PowerShell и командной строки, включая использование модуля PSWindowsUpdate, удаление обновлений на удаленных компьютерах и обход ограничений для критических обновлений Servicing Stack.
Удаление обновлений через командную строку
Командная строка позволяет быстро просмотреть список установленных обновлений и удалить их с помощью утилиты wusa.
Просмотр списка обновлений
Чтобы вывести список установленных обновлений, выполните команду:
wmic qfe list brief /format:table
Команда отображает номера обновлений (HotFixID, например, KB5048667) и дату установки.
Удаление обновления
Для удаления конкретного обновления используйте команду wusa с номером KB:
wusa /uninstall /kb:5048667
Подтвердите удаление в появившемся окне. После успешного удаления в Журнале событий (Просмотр событий, журнал Setup) появится событие с EventID 7 от источника WUSA, например:
Обновление Windows «Security Update for Microsoft Windows (KB5048667)» успешно удалено. (Командная строка: «C:\Windows\system32\wusa.exe» /uninstall /kb:5048667)
Ограничения тихого режима
Ранее в Windows можно было удалять обновления в тихом режиме (без подтверждения) с параметрами /quiet и /norestart:
wusa.exe /uninstall /kb:5048161 /norestart /quiet
Однако, начиная с Windows 10 1507, параметр /quiet игнорируется, и удаление в фоновом режиме невозможно. При попытке появляется ошибка в Журнале событий (EventID 8):
Не удалось удалить обновление Windows из-за ошибки 2147942487 «Неверный параметр». (Командная строка: «C:\Windows\system32\wusa.exe» /uninstall /kb:5048161 /norestart /quiet)
Удаление обновлений через PowerShell
PowerShell предоставляет более гибкие инструменты для управления обновлениями, включая просмотр списка обновлений и их удаление.
Просмотр списка обновлений
Чтобы вывести список установленных обновлений, отсортированных по дате установки (от новых к старым), используйте одну из следующих команд:
1. С помощью Get-CimInstance:
Get-CimInstance -ClassName Win32_QuickFixEngineering | Select HotFixID, InstalledOn | Sort-Object InstalledOn -Descending
2. С помощью Get-HotFix:
Get-HotFix | Select-Object HotFixID, InstalledOn, Description | Sort-Object InstalledOn -Descending
Обе команды показывают номера обновлений (HotFixID), даты установки и, в случае Get-HotFix, описание обновления.
Удаление обновлений за определенную дату
Для удаления всех обновлений, установленных в конкретную дату, выполните скрипт:
$Update_Date="12/13/2024"
Get-CimInstance -ClassName Win32_QuickFixEngineering | Where-Object { $_.InstalledOn -Match $Update_Date } | ForEach-Object { Start-Process "wusa.exe" -ArgumentList "/uninstall /kb:$($_.HotFixID.Substring(2))" -Wait }
Скрипт находит обновления за указанную дату и запускает wusa.exe для их удаления. Параметр -Wait обеспечивает последовательное выполнение.
Использование модуля PSWindowsUpdate
Модуль PSWindowsUpdate упрощает управление обновлениями, включая их удаление и скрытие.
Установка модуля
Установите модуль PSWindowsUpdate:
Install-Module -Name PSWindowsUpdate
Просмотр истории обновлений
Выведите список 10 последних обновлений:
Get-WUHistory | Select-Object -First 10 | Select-Object KB, OperationName, Date, Result, Title | Format-Table
Команда показывает номера KB, тип операции (установка/удаление), дату, результат и название обновления.
Удаление обновления
Удалите обновление, указав его номер KB, в тихом режиме:
Remove-WindowsUpdate -KBArticleID KB5048667 -Confirm:$false -Verbose
Параметр -Confirm:$false подавляет запрос на подтверждение, а -Verbose выводит подробности операции.
Если команда возвращает ошибку с кодом -2145124318, это означает, что обновление нельзя удалить (например, оно является частью критического компонента).
Скрытие обновления
Чтобы предотвратить повторную установку удаленного обновления, скройте его:
Hide-WindowsUpdate -KBArticleID KB5048667
Удаление обновлений на удаленных компьютерах
Для удаления обновлений на удаленном компьютере используйте следующие методы:
1. С помощью PSExec:
psexec \\192.168.158.100 -u root -s cmd.exe /c "dism /online /remove-package /packagename:Package_for_DotNetRollup_481~31bf3856ad364e35~amd64~~10.0.9290.1 /quiet /norestart"
2. С помощью PowerShell Remoting:
Invoke-Command -ComputerName 192.168.158.100 -ScriptBlock { Remove-WindowsUpdate -UpdateID KB5048161 -Force -Confirm:$false }
Удаление обновлений Servicing Stack
Обновления Servicing Stack Update (SSU) являются критическими компонентами Windows и не могут быть удалены стандартными методами. Попытка удаления через wusa или Remove-WindowsUpdate приводит к ошибке:
Servicing Stack 10.0.26100.2592 требуется вашей системе и не может быть удален.
Однако существует обходной способ удаления кумулятивных обновлений (LCU), установленных после SSU, с помощью утилиты DISM. Этот метод потенциально опасен и может привести к нестабильности системы, поэтому используйте его с осторожностью.
Просмотр установленных пакетов
Выведите список установленных обновлений в образе Windows:
Get-WindowsPackage -Online | Where-Object { $_.ReleaseType -like "*Update*" } | Format-Table
Удаление пакета
Скопируйте имя пакета и удалите его:
Remove-WindowsPackage -Online -NoRestart -PackageName Package_for_RollupFix~31bf3856ad364e35~amd64~~26100.2314.1.10
Параметр -NoRestart предотвращает немедленную перезагрузку.
Рекомендации
Пауза обновлений: Чтобы предотвратить повторную установку удаленного обновления, приостановите обновления на срок до 35 дней:
– Перейдите в Параметры → Обновление и безопасность → Приостановить обновления.
Резервное копирование: Перед удалением обновлений создайте точку восстановления системы:
Checkpoint-Computer -Description "Before removing updates" -RestorePointType MODIFY_SETTINGS
Проверка журналов: После удаления обновления проверьте Журнал событий (журнал Setup) для подтверждения успеха или диагностики ошибок.
Ограничения SSU: Избегайте удаления Servicing Stack Updates, так как это может нарушить возможность установки будущих обновлений.
Удаление обновлений Windows через PowerShell и командную строку позволяет устранить проблемы, вызванные проблемными обновлениями. Команды wusa, Get-HotFix и модуль PSWindowsUpdate обеспечивают гибкость в управлении обновлениями, включая удаление на локальных и удаленных компьютерах. Для критических обновлений Servicing Stack требуется осторожность и использование DISM. Правильное применение этих методов помогает поддерживать стабильность системы и минимизировать риски.