HOWTO: Script to List Installed Software on Multiple Computers


Creating a script to list of installed software on multiple computers is the first important step in implementing centralized software inventory for your network. Also, this method of building a list of installed programs in the system can be useful before reinstalling the system when you need to find unwanted software. Information about installed applications should include product name, vendor, version, install path and some other data. This guide describes how to create a script to list installed software on multiple computers and save the list of installed programs to CSV file.



Manually:

1. Execute WMI Query in ROOT\CIMV2 Namespace:

   - Launch WMI Explorer or any other tool which can run WMI queries.
   - Run WMI query: SELECT * FROM Win32_Product

2. Open WMIC Command-line Interface:

   - Press WIN+R
   - Type "wmic", press Enter
   - In wmic command line tool type: /node:RemoteComputerName product

3. Run This Simple Windows Powershell Script:

   - thru WMI object: Get-WmiObject -Namespace ROOT\CIMV2 -Class Win32_Product -Computer RemoteComputerName
   - thru Windows Registry: Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate
   - thru Get-RemoteProgram cmdlet: Get-RemoteProgram -ComputerName RemoteComputerName

4. Use Following Code to Select Specific Columns:

   - execute: Get-WmiObject -Namespace ROOT\CIMV2 -Class Win32_Product -Computer RemoteComputerName | Select-Object Name, Version, PSComputerName

5. Sort the Results Using the Line Below:

   - invoke command: Get-WmiObject -Namespace ROOT\CIMV2 -Class Win32_Product -Computer RemoteComputerName | Select-Object Name, Version, PSComputerName | Sort-Object Name

6. The Next Code Helps to Filter Results:

   - use it: Get-WmiObject -Namespace ROOT\CIMV2 -Class Win32_Product -Computer RemoteComputerName | Select-Object Name, Version, PSComputerName | Where-Object -FilterScript {$_.Name -like "Microsoft*"}

7. Save Results to CSV File:

   - run: Get-WmiObject -Namespace ROOT\CIMV2 -Class Win32_Product -Computer RemoteComputerName | Select-Object Name, Version, PSComputerName | Export-CSV "c:\file.csv" -Append -NoTypeInformation

8. The Next Step Is to Query Multiple Computers:

   - computers from a text file: Get-Content -Path c:\computers.txt | ForEach-Object {Get-WmiObject -Namespace ROOT\CIMV2 -Class Win32_Product -Computer $_}
   - computers from AD domain: Get-ADComputer -Filter {OperatingSystem -Like 'Windows 10*'} | ForEach-Object {Get-WmiObject -Namespace ROOT\CIMV2 -Class Win32_Product -Computer $_.Name}

With Action1 Endpoint Security Platform:

Step 1 - Sign-up for Free:

Step 2 - Type Your Question in Plain English:

How to create a script to list installed software on multiple computers and use powershell script to get a list of installed software on remote computer. - search query

Step 3 - Set Filters, If Necessary:

How to create a script to list installed software on multiple computers and use powershell script to get a list of installed software on remote computer. - set filters

Step 4 - See Results from All Endpoints in Seconds:

Endpoint NameInstall DateNameVendorVersion
fred.widgets.local20171204Microsoft Office 2016Microsoft19.0.8482
mac.widgets.local20171204Microsoft SQL Server 2015Microsoft11.1.5839
ray.widgets.local20171204Microsoft Office 2012Microsoft17.0.3629

Do not have time to write scripts? Check out Action1 Endpoint Security Platform. Ask questions in plain English such as "list of installed software" or "all running processes".
Get answers instantly from live systems or subscribe to real-time alerts:


Other Relevant HOWTOs: