How can I detect updates for all apps installed on my Windows PC?

August 31, 2026 4 answers
Asked by MellowCedar42
I'm trying to write a PowerShell script that reports when applications installed on my home Windows PC have updates available. I found the Evergreen project and thought I could enumerate installed programs from the uninstall registry keys, then pass each DisplayName to Find-EvergreenApp. My current approach reads from the 32-bit, 64-bit, and per-user uninstall locations, but names containing spaces do not seem to match as expected. For example, querying "Telegram" works and returns Telegram Desktop, while passing the full display name does not. Is there a proper way to handle application names with spaces, or should I use a different tool for checking installed software updates?

Answers

BrightOwl7
WinGet is probably the simplest option for this. It covers a large selection of commonly installed applications and can check for available updates with `winget upgrade`. It is not complete, but it may handle most of the software on a typical home PC without needing to query each application manually.
Reply to this answer
QuartzPanda19
You can run `winget upgrade` to get a table showing the installed version and the available version for supported applications. It also gives you the package ID and source, which is more reliable than matching display names from the registry.
Reply to this answer
SageRiver31
UniGetUI is another option if you prefer a graphical interface, but WinGet is generally easy to automate from PowerShell. Keep in mind that neither tool includes every application, especially software distributed outside their supported sources.

MellowCedar42: That was why I initially skipped WinGetโ€”I remembered it missing applications such as 7-Zip. Iโ€™ll take another look to see how much broader its coverage is now.

Reply to this answer
CopperLime58
Evergreen appears to use JSON manifests containing its known application names and metadata. The function may be expecting the manifest's application identifier rather than an arbitrary uninstall-registry DisplayName. You could inspect those manifests and match the display name yourself, then pass the corresponding Evergreen name. Adding an application parameter or improving name matching would also be a reasonable feature request.
Reply to this answer

Add your answer

Answers are reviewed before publication.

Related Discussions