There are several ways to list all Windows updates using PowerShell. I will share 3 of them in this post.
Microsoft releases Windows updates on the second Tuesday of each month. It is called Patch Tuesday. Users likely to install and start using these updates on following Wednesday.
If you want to see which updates were installed in the past, you can go to “Control Panel > Programs and Features > Installed Updates“. This is a quick way to list all Windows updates but this list is not easy to copy or edit. Use the commands below to get a text-based list of the updates.

List all Windows updates
The easiest way to retrieve this list is that using WMI (Windows Management Instrumentation):
- Go to “Start” and search for “PowerShell“
- Run the command below
Get-WmiObject -Class "win32_quickfixengineering"

Source of the command above is here.
In some cases, you may need to export this list to an Excel file. Extend the command above as the one below. It will export the list to an Excel file and save it to your desktop.
Get-WmiObject -Class "win32_quickfixengineering" | Export-Csv -NoType "$Env:userprofile\Desktop\Updates.csv"
Looking for support dates for Microsoft updates? Check this out.
Alternatives
Here are 2 alternatives to list all Windows updates in your machine. They basically give the same results in different formats (They may require PowerShell to be opened as Administrator).
Alternative 1:
wmic qfe
Alternative 2:
Get-Hotfix | Select PSComputerName, InstalledOn, Description, HotFixID, InstalledBy
Bonus
The script below gives a detailed list of the updates. It shows failed ones and Windows Defender security updates too. However, I wasn’t able to see some of the updates listed with the commands above in this list. Still, it gives an idea of scripting for this purpose.
$Session = New-Object -ComObject "Microsoft.Update.Session"
$Searcher = $Session.CreateUpdateSearcher()
$historyCount = $Searcher.GetTotalHistoryCount()
$Searcher.QueryHistory(0, $historyCount) | Select-Object Date,@{name="Operation"; expression={switch($_.operation){1 {"Installation"}; 2 {"Uninstallation"}; 3 {"Other"}}}}, @{name="Status"; expression={switch($_.resultcode){1 {"In Progress"}; 2 {"Succeeded"}; 3 {"Succeeded With Errors"};4 {"Failed"}; 5 {"Aborted"} }}}, Title, Description | Export-Csv -NoType "$Env:userprofile\Desktop\Windows Updates.csv"
The command above is courtesy of My IT Notes.
1 thought on “How to list all Windows updates easily”