Если после установки обновлений Windows на компьютере наблюдаются проблемы или ошибки, допустимо удалить конкретное обновление или все последние установленные обновления, чтобы попытаться устранить проблему. Рассмотрим, как удалить установленные обновления в Windows из командной строки или PowerShell.
Удалить обновление из командной строки Windows
Для вывода списка обновлений из командной строки можно использовать команду:
wmic qfe list brief /format:table
Вывод команды содержит номера обновлений (KB, HotFixID) и дату установки. Для удаления определенного обновления, скопируйте его ID и выполните команду:
wusa /uninstall /kb:5048667
Подтвердите удаление обновления.
В случае успешного удаления обновления в журнале Setup в Event Viewer появится событие от WUSA с EventID 7 и описанием:
Windows update "Security Update for Microsoft Windows (KB5048667)" was successfully uninstalled. (Command line: ""C:\Windows\system32\wusa.exe" /uninstall /kb:5048667")
Чтобы Windows не пыталась повторно установить удаленное обновление, можно поставить обновления на паузу на срок до 35 дней.
В предыдущих версиях Windows команду wusa можно было использовать для удаления обновлений в фоновом (тихом режиме) без подтверждения и с отложенной перезагрузкой. Использовалась такая команда:
wusa.exe /uninstall /KB:5048161 /norestart /quiet
Однако фоновый режим удаления обновлений был отключен начиная с Windows 10 1507. Теперь команда wusa.exe игнорирует параметр
/quiet
. При этом в журнале событий появляется ошибка Event ID 8:
Windows update could not be uninstalled because of error 2147942487 "The parameter is incorrect." (Command line: ""C:\Windows\system32\wusa.exe" /uninstall /KB:5048161 /norestart /quiet")
PowerShell: удаление установленных обновлений
Для более гибкого удаления обновлений можно использовать PowerShell. Следующие команды выведут список установленных обновлений Windows, отсортированных начиная с последних.
Get-CimInstance -ClassName Win32_QuickFixEngineering| select HotFixID, InstalledOn | sort InstalledOn -Descending
Или
Get-HotFix | Select-Object HotFixID, InstalledOn, Description| sort InstalledOn -Desc
С помощью следующих команд можно удалить все обновления Windows, установленные в определенную дату:
$Update_Date="12/13/2024"
Get-CimInstance -ClassName Win32_QuickFixEngineering | ? InstalledOn -Match $Update_Date | %{start "wusa.exe" @("/uninstall", "/kb:$($_.HotFixID.Substring(2))") -Wait}
Также для удаления обновлений можно исопльзовать PowerShell модуль PSWindowsUpdate. Установите модуль на компьютер:
Install-Module -Name PSWindowsUpdate
Выведите список 10 последних установленных обновлений:
Get-WUHistory | Select-Object -First 10| select KB,OperationName,Date,Result,title|ft
Чтобы удалить обновление, укажите его номер в команде (в этом примере используется тихий режим с подавлением запроса на подтверждение удаления):
Remove-WindowsUpdate -KBArticleID KB5048667 -Confirm:$false -Verbose
-2145124318
, это означает что такое обновление удалить нельзя.Чтобы предотвратить автоматическую установку этого обновления, нужно скрыть его от службы Windows Update:
Hide-WindowsUpdate -KBArticleID KB5048667
Если нужно удалить обновление с удаленного компьютера, можно использовать:
- Утилиту 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"
- Или PowerShell Remoting:
Invoke-Command -ComputerName 192.168.158.100 -ScriptBlock { Remove-WindowsUpdate -UpdateID KB5048161 -Force -Confirm:$false }
Удаление обновлений из образа Windows (DISM, Remove-WindowsPackage)
При удалении некоторых обновлений может появится ошибка:
Windows Update Standalone Installer Servicing Stack 10.0.26100.2592 is required by your computer and cannot be uninstalled.
Дело в том, что это обновление служебного стека (Servicing Stack Update, SSU). Microsoft указывает, что обновления SSU нельзя удалить после установки, т.к. это критический компонент системы, без которого вы не сможете установить последующие кумулятивные обновления (Latest Cumulative Update, LCU)
Однако есть обходной способ, позволяющий удалить LCU после установки Servicing Stack Update.
Выведите список установленных компонентов обновлений в образе Windows:
Get-WindowsPackage -Online | where ReleaseType -like "*Update*"|ft
Чтобы удалить пакет обновления из образа, скопируйте его имя и выполните команду:
Remove-WindowsPackage -Online -NoRestart -PackageName Package_for_RollupFix~31bf3856ad364e35~amd64~~26100.2314.1.10