The Windows Update History GUI in the Settings app provides only basic information about installed updates (accessible via the URI shortcut ms-settings:windowsupdate-history
) and is not convenient for searching. In this article, we’ll explore how to list installed updates in Windows from the command prompt or PowerShell console, find out when updates were last installed on a computer, and check whether a specific update is installed on a local or remote machine.
Previously, the wmic command-line tool was commonly used to list installed updates in Windows. Open cmd.exe
and run the following command to display a convenient table with the installed update history:
wmic qfe list brief /format:table
This table contains the update numbers (HotFixID
), the installation dates (InstalledOn
), and the name of the user who installed the update (InstalledBy
).
However, Microsoft has announced that support for WMI-based tools (including the wmic utility) will be disabled by default in new versions of Windows (starting with Windows 11 24H2). Therefore, it is recommended to use PowerShell to get information about installed updates.
A similar PowerShell command that displays a table of installed updates sorted by installation date:
Get-HotFix | Select-Object HotFixID, InstalledOn, InstalledBy, Description| sort InstalledOn -Desc
This cmdlet retrieves information from the Win32_QuickFixEngineering class, so the same update list can also be displayed as follows:
Get-CimInstance -ClassName Win32_QuickFixEngineering| select HotFixID, InstalledOn | sort InstalledOn -Descending
Export the list of installed updates to a text file:
Get-HotFix |Format-Table -AutoSize > c:\temp\update_list.txt
Check whether a specific update is installed by (KB ID):
Get-HotFix -id 'KB5056578'
List updates on a remote computer:
Get-HotFix -ComputerName wks1234
Check whether a specific update is installed on multiple computers (you can generate a list of computers in Active Directory using the Get-ADComputer cmdlet)
$computers = @('comp1', 'comp2', 'comp3')
$updateId = 'KB5056578'
foreach ($computer in $computers) {
$hotfix = Get-HotFix -ComputerName $computer -Id $updateId -ErrorAction SilentlyContinue
if ($hotfix) {
Write-Host "Update $updateId is installed on $computer."
} else {
Write-Host "Update $updateId is NOT installed on $computer."
}
}
Get the date of the last successful update installation in Windows
Get-HotFix| sort InstalledOn -Desc|select InstalledOn -First 1
There is a separate PowerShell module, PSWindowsUpdate, for managing updates. It includes the Get-WUHistory
cmdlet (which lists the complete update installation history, including errors) and the Get-WULastResults
cmdlet (which gets the date of the last successful update and scan on the update server)