Listing installed software package details on Windows using PowerShell

Community Manager Community Manager
Community Manager
4 0 260

Have you ever observed that the Apps & Features (aka "Add/Remove Programs") UI in Windows doesn't display all software packages that are installed, and found it tedious to confirm details of installed software by inspecting and searching through the Uninstall registry keys?

Here are a couple of PowerShell commands to make this process easier.

First of all we get a list of all the Uninstall registry entries from both the 64 bit and 32 bit areas of the registry:

$u = (Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*") + (Get-ItemProperty "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*")

Once these details have been retrieved into a variable, we filter for packages of interest, and select a few interesting properties to output. In this example we are filtering for all packages whose name starts with "Adobe":

$u |
Where DisplayName -like 'Adobe*' |
Sort DisplayName, DisplayVersion |
Select DisplayName, DisplayVersion, Publisher, InstallDate

This produces nicely formatted output like the following:

DisplayName                 DisplayVersion Publisher                  InstallDate
-----------                 -------------- ---------                  -----------
Adobe Acrobat Reader DC MUI 21.005.20060   Adobe Systems Incorporated 20210905
Adobe Digital Editions 4.5  4.5.11         Adobe Systems Incorporated


When using an approach like this, be aware that the FlexNet inventory agent (and possibly other agents) will gather details of installed software from a range of sources beyond just the Uninstall area of the registry. However in a Windows environment, the majority of software does leave a footprint in the Uninstall area of the registry, and can be picked up using an approach like this.

Melbourne, Australia