Uninstall Windows Updates using PowerShell

If your Windows device starts experiencing issues after installing a Windows update, uninstalling the update may help you identify and resolve the problem. However, the method used to remove an update depends on its type. Some updates can be uninstalled using the Windows Update Standalone Installer (WUSA), while newer cumulative updates may require DISM or PowerShell commands.

In this post, I will walk you through the steps to identify installed Windows updates, check whether an update can be uninstalled, remove the correct update package, and verify that it has been successfully removed. The examples focus on Windows 11 and use built-in Windows tools, so you do not need to install any third-party software.

Save your work and launch Windows PowerShell as an administrator. Review the Microsoft support article for the update to check for known issues and whether a newer update resolves the problem. Uninstalling a security update also removes the protection it provides, so make sure you install a suitable replacement (if available) once the issue has been resolved.

Before you begin

Choose the Right Uninstall Method

Before we look at the steps, it is helpful to understand which method to use. The table below lists the available options and explains when each one is appropriate.

MethodWhen to use it
Remove-WindowsPackageRemove a specific, removable Windows servicing package using PowerShell
DISM.exe /Remove-PackageUse the command-line package removal method
WUSA.exe /uninstallRemove an update that supports WUSA uninstallation
SettingsRemove an update that appears in the Uninstall Updates list
Windows Recovery EnvironmentAttempt removal of the latest quality update when Windows will not start

You can run WUSA and DISM.exe from a PowerShell window. If you prefer to use a PowerShell cmdlet, Remove-WindowsPackage is available in the built-in DISM module. All three tools are included with Windows, so the steps below do not require the PSWindowsUpdate module.

Many current Windows update packages include both the latest cumulative update (LCU) and a servicing stack update (SSU). The servicing stack contains the components Windows uses to install updates. Once installed, the SSU cannot be removed.

For these combined packages, Microsoft provides instructions to remove the cumulative update using DISM and its package name. WUSA cannot uninstall the combined package. You can find an example in the removal notes for this Microsoft cumulative update. Before proceeding, check the instructions for the specific KB installed on your device.

Step 1: Find the Update KB Number

The first step is to identify the update you want to uninstall. Open Start, search for Windows PowerShell, and select Run as administrator. For the DISM module commands in this post, use the built-in Windows PowerShell application. Run the following command to display the hotfixes reported by Windows, with the most recently installed entries listed first:

Get-HotFix |
    Sort-Object InstalledOn -Descending |
    Select-Object HotFixID, InstalledOn, Description

In the command output, the HotFixID column shows the KB number, and InstalledOn shows the installation date. Compare this date with when you first noticed the issue. This can help you identify an update to investigate, although the installation date alone does not confirm that the update caused the problem.

Alternatively, you can use the following CIM command to retrieve the hotfix information:

Get-CimInstance -ClassName Win32_QuickFixEngineering |
    Select-Object HotFixID, InstalledOn, Description

Both commands retrieve information from the same Windows hotfix source, which does not include every update type. If you cannot find the update in the output, also check Settings > Windows Update > Update history. For more information about this limitation, refer to the Get-HotFix documentation.

Step 2: Check the Update’s Removal Instructions

Once you have identified the KB number, open its Microsoft support article and review the known issues and uninstall instructions. Make sure the article applies to the Windows version installed on your device. The same KB can cover more than one Windows build or processor architecture, so you will also need to identify the correct package if you use DISM.

If you are removing an operating system cumulative update, run winver and note the current OS build number. You can compare this information after restarting the device to help verify the removal.

If Microsoft’s instructions specify DISM, follow Method 1 below. If the update supports removal through WUSA, you can use Method 2.

Method 1: Remove a Windows package using PowerShell

List installed packages

To find the installed Windows packages, run the following command. Run this command on the elevated PowerShell console.

Get-WindowsPackage -Online |
    Where-Object { $_.PackageState -eq 'Installed' } |
    Sort-Object InstallTime -Descending |
    Format-List PackageName, PackageState, ReleaseType, InstallTime
Remove a Windows package using PowerShell

The -Online parameter tells the command to check the Windows installation currently running on your device. The Format-List parameter displays each package’s details as a list, making long package names easier to read and copy.

In the output, look for the package associated with the update you want to remove. An operating system cumulative update may have a name beginning with Package_for_RollupFix, followed by additional details and a version number. The full package name is different from the KB number, and you will need it for the uninstall command.

To review a package in more detail, copy its complete name and use it in the following commands:

$PackageName = 'PASTE-EXACT-PACKAGE-NAME-HERE'
Get-WindowsPackage -Online -PackageName $PackageName | Format-List *

Replace PASTE-EXACT-PACKAGE-NAME-HERE with the full name copied from the output. Compare the package description, version, installation date, and any available support information with the KB article. Confirm that you have selected the correct package before continuing. If you cannot confidently match it to the update, use the Settings uninstall list or investigate the package further. For details about the command, refer to the Get-WindowsPackage documentation.

Get-WindowsPackage

Remove the Verified Package

Once you have confirmed the package name, run the following command to uninstall it:

Remove-WindowsPackage -Online -PackageName $PackageName -NoRestart -ErrorAction Stop

This command attempts to remove the selected package from your device. The -NoRestart parameter prevents an automatic restart, allowing you to save your work and restart at a suitable time. A restart may still be required to complete the removal.

Wait for the command to complete and review the result. If the removal fails, note the error message so you can investigate the cause. If it completes successfully and requires a restart, save your work and restart the device from the Start menu.

For this method, use the installed package’s full name rather than the path to a downloaded .msu file. You can find more information in the Remove-WindowsPackage documentation.

Alternative: Run DISM.exe from PowerShell

You can also use DISM.exe directly from the same PowerShell window. The following commands list the packages, display details for the package selected earlier, and remove it:

# List packages
dism.exe /Online /Get-Packages /Format:Table

# Inspect the exact package selected earlier
dism.exe /Online /Get-PackageInfo "/PackageName:$PackageName"

# Remove that verified package
dism.exe /Online /Remove-Package "/PackageName:$PackageName" /NoRestart

Choose either Remove-WindowsPackage or DISM.exe to perform the removal. If you have already uninstalled the package successfully using one method, you do not need to repeat the operation with the other. Both methods follow Windows servicing rules, so packages marked as permanent cannot be removed. Refer to the DISM package servicing documentation for more information.

Method 2: Remove a supported update using WUSA

If the update supports WUSA uninstallation, you can remove it using its KB number. In the example below, replace 1234567 with the numeric part of the KB you want to uninstall. For this command, leave out the letters KB.

$KBNumber = '1234567' # Placeholder: replace before running

Start-Process -FilePath "$env:SystemRoot\System32\wusa.exe" `
    -ArgumentList "/uninstall /kb:$KBNumber" `
    -Wait

After you run the command, review the confirmation dialog and follow the prompts to remove the update. Restart the device if requested. The -Wait parameter keeps PowerShell waiting until WUSA closes, but you should still check the result to confirm that removal was successful. For more information, refer to the Windows Update Standalone Installer documentation.

Microsoft has deprecated the use of /quiet for WUSA uninstallation, so it is not included in this example. If you are working with a combined SSU and LCU package, use the package removal method described earlier. See Microsoft’s deprecated features list for details.

Verify Updated Removal

After the device restarts, launch Windows PowerShell as an administrator and check the package again. If you have opened a new PowerShell session, first set $PackageName to the same full package name used during removal. Then run the following command:

Get-WindowsPackage -Online |
    Where-Object { $_.PackageName -eq $PackageName } |
    Format-List PackageName, PackageState

Review the PackageState value in the output. If it shows Uninstall Pending, Windows has not yet completed the removal. A package entry may still appear even when it is no longer installed, so check its state carefully. If the command returns an error, investigate that error before drawing a conclusion.

If the update appeared in the original Get-HotFix results, you can also check for its KB number using the following commands:

$KB = 'KB1234567' # Placeholder: replace with the target KB
Get-HotFix | Where-Object { $_.HotFixID -eq $KB }

Replace KB1234567 with the KB number you removed. If no matching entry appears, use this result alongside the uninstall output and package state to verify the change. For an operating system cumulative update, also check the build number using winver. Finally, test the device to see whether the original issue has been resolved.

Uninstall Update via Settings

If you prefer to use the Windows interface, open Settings > Windows Update > Update history > Uninstall updates. Locate the update you want to remove, select Uninstall, and follow the instructions on the screen.

Not every update can be uninstalled from this page. If your update is not listed, review its Microsoft support article to check which removal options are available. For more information, refer to Microsoft’s update uninstall guide.

What if Windows will not start?

If Windows no longer starts after an update, you can try removing the latest quality update through Windows Recovery Environment. Select Troubleshoot > Advanced options > Uninstall Updates > Uninstall latest quality update, then follow the prompts. Have your BitLocker recovery key available, as you may be asked to enter it.

This option removes the latest quality update. Returning to an earlier Windows feature version requires a different recovery option. Also, the -Online commands in this post are intended to run within your normal Windows installation. They should not be used to target that installation from a recovery command prompt. You can read more about the available options in Microsoft’s Windows recovery guide.

Troubleshooting Update Removal

If the update does not uninstall successfully, the table below explains some common causes and what you can check next.

IssueExplanation and next step
Access denied or elevation requiredOpen Windows PowerShell using Run as administrator.
WUSA cannot remove the updateCheck whether the KB is a combined SSU and LCU package. Follow its DISM removal instructions.
The update is missing from Get-HotFixCheck Update history and Windows package information. The hotfix list is incomplete for some update types.
The package is permanent or cannot be uninstalledRespect the servicing restriction. Check the KB article for a replacement update or supported recovery option.
Uninstall Pending remainsComplete the required restart and check again. If it persists, investigate the servicing error.
An older update cannot be removed independentlyIt may have been superseded or its rollback data may no longer be available. Check the active cumulative update and its removal notes.
Removal succeeds but the problem remainsContinue investigating the application, driver, or configuration involved. Do not repeatedly remove unrelated updates.

If a package removal command fails, review the DISM log for more information about the error. The default location is:

C:\Windows\Logs\DISM\dism.log

For errors reported by WUSA, open Event Viewer > Windows Logs > Setup. Note the error code and the KB or package name so you can investigate the specific failure.

If component cleanup was previously run with /ResetBase, updates installed before that cleanup can no longer be removed. For this reason, avoid using /ResetBase while you are investigating an update that you may need to uninstall. This behaviour is explained in the cleanup section of the DISM documentation.

Frequently Asked Questions (FAQs)

Can I uninstall every Windows update?

No. Some updates, including servicing stack updates and packages marked as permanent, cannot be uninstalled. Removal may also depend on whether other packages require the update and whether Windows still has the files needed to undo the installation.

Does uninstalling an update stop it from returning?

No. Windows may offer the update again after you remove it. If you need to pause updates temporarily while investigating the issue, follow your organisation’s update management process. Resume updates once a suitable fix is available.

Does this remove one individual fix from a cumulative update?

No. Uninstalling a cumulative update removes the package rather than an individual fix within it. Review the changes included in the update before deciding whether to remove it.

Do I need the PSWindowsUpdate module?

No. All the methods covered in this post use tools included with Windows. PSWindowsUpdate is a separate community module, and installing it does not allow you to remove packages that Windows marks as permanent.

Leave a Comment