HOWTO: Get a List of Installed Software on Domain Computers


Creating a list of installed software on all endpoints is the first important step in implementing centralized software inventory for your network. Information about installed applications should include product name, vendor, version, install path and some other data. This HOWTO guides describes the basics of the process.



Manually:

1. Run WMI query in ROOT\CIMV2 namespace:

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

2. Run wmic command-line interface:

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

3. Run 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. Select specific columns:

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

5. Sort results:

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

6. Filter results:

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

7. Save 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. 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 get a list of installed software on all domain computers - search query

Step 3 - Set filters, if necessary:

How to get a list of installed software on all domain computers - 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: