7/7/25, 11:14 PM Get a List of Installed Programs Using PowerShell
Get a List of Installed Programs Using PowerShell
Recently, one of my clients asked me for a script to get the list of installed programs in their system. In this tutorial, I will explain how to get
a list of all the software programs installed on your Windows computer using PowerShell. PowerShell provides a fast and efficient way
to get this information, both locally and remotely.
While you can always manually check installed programs through the Control Panel or by browsing disk partitions, this becomes tedious and
time-consuming when you need to audit multiple computers. PowerShell allows you to automate the process and quickly get a report of all
the software installed on a system, including useful details like the version numbers.
There are several different PowerShell techniques for getting a list of installed software on Windows 10 and Windows Server systems. Let’s
walk through some of the most common and useful methods.
1. Using the Get-ItemProperty Cmdlet
One of the easiest ways to list installed programs with PowerShell is using the Get-ItemProperty cmdlet to retrieve registry keys where
information about installed software is stored. The registry paths we’ll query are:
HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall
HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall
The second path is for 32-bit programs installed on 64-bit systems.
Here’s an example command to get all installed software and display the name, version, and install date:
Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, InstallDate
And here’s what the output looks like:
DisplayName DisplayVersion InstallDate
----------- -------------- -----------
7-Zip 24.05 (x64) 24.05
Duet Display 2.5.8.1
HP Documentation 1.0.0.1
Microsoft Visual Studio 2010 Tools for Office Runtime (x64) 10.0.60910
Mozilla Firefox (x64 en-US) 132.0.2
Mozilla Maintenance Service 112.0.2
Microsoft 365 - en-us 16.0.18227.20046
Microsoft 365 Apps for enterprise - en-us 16.0.18227.20046
Microsoft OneNote - en-us 16.0.18227.20046
VLC media player 3.0.20
I executed the above command in my local system, and you can see the exact output in the screenshot below:
read://https_powershellfaqs.com/?url=https%3A%2F%2Fpowershellfaqs.com%2Fget-a-list-of-installed-programs-using-powershell%2F 1/5
7/7/25, 11:14 PM Get a List of Installed Programs Using PowerShell
You can further refine this by filtering, sorting, and exporting the results. For instance, to export to a CSV file:
Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* |
Select-Object DisplayName, DisplayVersion, InstallDate |
Where-Object {$_.DisplayName -ne $null} |
Sort-Object DisplayName |
Export-CSV C:\InstalledSoftware.csv -NoTypeInformation
This filters out any entries missing a DisplayName, sorts alphabetically by the name, and exports the list to C:\InstalledSoftware.csv.
Check out List USB Devices Using PowerShell
2. Using Get-WmiObject
Get-WmiObject is a cmdlet available in Windows PowerShell that allows you to query WMI classes. Although it is somewhat older and less
efficient compared to Get-CimInstance, it is still widely used. We can still use Get-WmiObject to get all the installed programs.
Let me show you an example and the complete script.
Here’s a script that uses Get-WmiObject to list installed programs:
# Query the Win32_Product WMI class
$installedPrograms = Get-WmiObject -Class Win32_Product | Select-Object -Property Name, Version, Vendor
# Display the results
$installedPrograms | Format-Table -AutoSize
Explanation
Get-WmiObject -Class Win32_Product: This command queries the Win32_Product WMI class, which contains information about
installed software.
Select-Object -Property Name, Version, Vendor: This filters the output to display only the Name, Version, and Vendor properties.
Format-Table -AutoSize: This formats the output in a table for better readability.
Here is the exact output you can see in the screenshot below:
read://https_powershellfaqs.com/?url=https%3A%2F%2Fpowershellfaqs.com%2Fget-a-list-of-installed-programs-using-powershell%2F 2/5
7/7/25, 11:14 PM Get a List of Installed Programs Using PowerShell
Read List Local Administrators Using PowerShell
3. Using Get-CimInstance
Get-CimInstance is a more modern cmdlet that provides similar functionality to Get-WmiObject but with improved performance and
compatibility. It uses the CIM (Common Information Model) standard and is recommended for use in newer scripts.
Now, let me show you an example of how to use the Get-CimInstance cmdlet to get all the installed programs from the system.
Here’s a script that uses Get-CimInstance to list installed programs:
# Query the Win32_Product CIM class
$installedPrograms = Get-CimInstance -ClassName Win32_Product | Select-Object -Property Name, Version, Vendor
# Display the results
$installedPrograms | Format-Table -AutoSize
Explanation:
Get-CimInstance -ClassName Win32_Product: This command queries the Win32_Product CIM class.
Select-Object -Property Name, Version, Vendor: This filters the output to display only the Name, Version, and Vendor properties.
Format-Table -AutoSize: This formats the output in a table for better readability.
Check out List All Environment Variables in PowerShell
4. Querying the Registry
Windows stores information about installed programs in the registry. By querying specific registry paths, you can retrieve detailed
information about installed software.
Let me show you an example.
Example:
$registryPaths = @(
"HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall",
"HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall"
)
foreach ($path in $registryPaths) {
Get-ItemProperty -Path $path\* | Select-Object DisplayName, DisplayVersion, Publisher
}
This script iterates through two registry paths to find both 32-bit and 64-bit installed programs. It then selects and displays the program name,
version, and publisher.
Here is the exact output in the screenshot below:
read://https_powershellfaqs.com/?url=https%3A%2F%2Fpowershellfaqs.com%2Fget-a-list-of-installed-programs-using-powershell%2F 3/5
7/7/25, 11:14 PM Get a List of Installed Programs Using PowerShell
Read How to Set Proxy in PowerShell?
5. Using Get-Package
PowerShell’s Get-Package cmdlet is another powerful cmdlet that lists installed software, especially if you are using newer versions of
PowerShell (5.0 and above).
Example:
Get-Package | Select-Object -Property Name, Version, ProviderName
This command lists all installed packages, including those installed via package managers like Chocolatey or NuGet. It selects and displays
the package name, version, and provider.
To ensure you capture all installed programs, you can combine the methods above into a single script. This approach helps cover any gaps that
a single method might miss.
Here is the complete PowerShell script.
# Define registry paths
$registryPaths = @(
"HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall",
"HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall"
)
# Get installed programs from registry
$installedPrograms = foreach ($path in $registryPaths) {
Get-ItemProperty -Path $path\* | Select-Object DisplayName, DisplayVersion, Publisher
}
# Get installed programs using Get-WmiObject
$installedPrograms += Get-WmiObject -Class Win32_Product | Select-Object -Property Name, Version, Vendor
# Get installed packages using Get-Package
$installedPrograms += Get-Package | Select-Object -Property Name, Version, ProviderName
# Remove duplicates and display results
$installedPrograms | Sort-Object -Property Name -Unique | Format-Table -AutoSize
This script aggregates results from the registry, WMI, and package managers, removes duplicates, and displays the final list in a table format.
Read Get HP Laptop Model and Serial Number Using PowerShell
read://https_powershellfaqs.com/?url=https%3A%2F%2Fpowershellfaqs.com%2Fget-a-list-of-installed-programs-using-powershell%2F 4/5
7/7/25, 11:14 PM Get a List of Installed Programs Using PowerShell
Filter and Export Installed Programs List
You may want to filter the list of installed programs or export the results for further analysis. Let me show you how to do it.
Filtering Results
To filter the list of installed programs, use the Where-Object cmdlet like the below:
$installedPrograms | Where-Object { $_.Name -like "*Microsoft*" } | Format-Table -AutoSize
This command filters the list to display only programs with “Microsoft” in their name.
Exporting Results
To export the list of installed programs to a CSV file, use the Export-Csv cmdlet.
Here is the complete script.
$installedPrograms | Export-Csv -Path "C:\InstalledPrograms.csv" -NoTypeInformation
This command exports the list to a CSV file located at C:\InstalledPrograms.csv.
Summary
In this tutorial, I explained multiple techniques for using PowerShell to get a list of programs installed on Windows computers, such as:
1. Using the Get-ItemProperty Cmdlet
2. Using Get-WmiObject
3. Using Get-CimInstance
4. Querying the Registry
5. Using Get-Package
You may also like:
read://https_powershellfaqs.com/?url=https%3A%2F%2Fpowershellfaqs.com%2Fget-a-list-of-installed-programs-using-powershell%2F 5/5