
PowerShell provides a management interface for accessing the information on your device. With the introduction of PowerShell 3.0, the Get-WmiObject cmdlet has been superseded by the Get-CimInstance. In this article, we will discuss how to “Get a list of installed programs locally or remotely in Windows”. Here are some interesting guides: How to remove pre-provisioned apps from Windows Image. And how to determine Apps UWP and remove pre-provisioned appx in Windows.
The Get-WmiObject cmdlet gets instances of WMI classes or information about the available WMI classes. The CimCmdlets modules contain cmdlets that interact with Common Information Model (CIM) Servers like the Windows Management Instrumentation (WMI) service.
This guide was birthed due to the comments from this blog post. Because the WmiObject cmdlet has been superseded by the Get-CimInstance. Here is a guide on how to fix Get-CimInstance Access PermissionDenied: (root\cimv2:Win32_OperatingSystem String) [Get-CimInstance], CimException on Windows.
Windows Remote Management (WinRM)
Windows Remote Management (WinRM) is the Microsoft implementation of the WS-Management Protocol.
It is a standard Simple Object Access Protocol (SOAP)-based, firewall-friendly protocol that allows hardware and operating systems, from different vendors, to interoperate.
The WS-Management protocol specification provides a common way for systems to access and exchange management information across an IT infrastructure. While running the CimInstance cmdlets. You may run into issues such as the ones described here “WinRM cannot complete the operation, verify that the specified computer name is valid, that the computer is accessible over the network, and that a firewall exception for the WinRM service is enabled“.
View installed Applications or programs in Windows
To view the list of installed programs. Kindly refer to this guide for more information. How to query a list of installed programs in Windows via Windows Settings, Control Panel, WMIC, PowerShell and Windows Registry.
To launch the Windows Settings App, you can also use the ms-settings:appsfeatures
URI schema is shown below. For a complete list of the Ms-Settings URL commands. Kindly visit this link.

This will list all programs installed on your computer including the Windows Store apps that came pre-installed as you can see below.

On Windows 10, this can be achieved by navigating to the Windows icon and then click on the Settings icon, and selecting Apps.
In the In Apps & Features, you will see a list of installed Applications.
You could also press the Press Windows key + I
on your keyboard to open Settings
and then click on Apps to view the list of Apps & features.

View the list of installed App via the Get-CimInstance
The syntax below will call the command and then specify a class we want to return information on.
We can also specify remote computers as well as specific properties and namespaces to target. To get a list of installed applications by vendor, kindly run the command below.
Get-CimInstance -Class Win32_Product | where vendor -eq 'Veeam Software Group GmbH' | select Name, Version

View the list of Installed Programs Using the Windows Registry, Command Prompt or PowerShell
You can also query the registry to get a list of all installed programs on a Windows PC. You can use a combination of the registry and PowerShell to get a list of installed applications. To do this, you will have to launch PowerShell with Administrative rights.
You may have to set the section policy to any of these modes as discussed in these guides “How to set the PowerShell Execution Policy via Windows Registry, how to set PowerShell Execution Policy via Windows Settings, and how to set Execution Policy via Windows PowerShell.
Please see how to add servers to the Trusted Hosts list via PowerShell and command Prompt for the WinRM client. Also, see how to determine which execution policy is configured on your Windows device
Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | sort-object -property DisplayName | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate

Get the list of Installed Apps via the WMIC Command
The Windows Management Instrumentation (WMI) Command-Line Utility (WMIC) is a command-line utility that allows users to perform WMI operations from a command prompt.
An interface called WMI offers a number of Windows management features. Applications and WMI scripts can be deployed to automate administrative tasks on remote computers or interface with other Windows tools like System Center Operations Manager (SCCM) or Windows Remote Management (WinRM).
Kindly refer to these related guides: How to Locate Your PC’s BIOS Serial Number and System Information on Windows 11, and How to Enable or Disable WMI Traffic at Command Prompt Using WMI Rule.
The following command “wmic product get name” will list all the installed applications on your device.
wmic product get name,version

Important! You could also list all possible information in one command like “wmic product get name, version, installlocation”.
To save all results in a HTML file (Tabular format), then the command is “wmic /output:software.htm product get Name, Version /format:htable”
Querry Remote Device
Here is are some commands to remotely query the list of installed applications and also by Vendor as you wish.
PS C:\Windows> Get-CimInstance -Class Win32_Product -Computer TechdaPC2 | where vendor -eq 'Microsoft Corporation' | select Name, Version
PS C:\Windows> Get-CimInstance -Class Win32_Product -Computer TechdaPC

Bonus: You can also query Win32_operatingsystem datastore etc. To do this, kindly run the command below. Another tool that can be used to view the list of installed programs is the UninstallView
program from NirSoft.
Get-CimInstance Win32_OperatingSystem | Format-List
Get-WmiObject win32_processor | Format-List
I hope you found this blog post helpful on how to get a list of installed programs locally or remotely in Windows. Now, you learned how to get a list of installed programs locally or remotely in Windows. If you have any questions, please let me know in the comment session.