Find Installed Software using SCCM CMPivot
In this post I will show you how to find installed software using SCCM CMPivot. Using the CMPivot you can find specific software installed on computers and export the results as well.
I have been exploring the CMPivot queries from sometime and I find it very interesting. The amount of information that you can gather from remote machines is simply awesome. If you are interested in exploring CMPivot, you can check out all my ConfigMgr CMPivot queries.
Alright a bit of introduction about CMPivot if you are using it for the first time. CMPivot is a utility that provides access to real-time state of devices in your environment. When you run a CMPivot query, it immediately runs a query on all currently connected devices in the target collection and returns the results. To learn more about CMPivot, refer CMPivot for real data in Configuration Manager.
There are many alternate methods to find installed softwares from computers however using SCCM CMPivot makes it bit easier. Finding the installed softwares from computers is something that is done in every software audit. On corporate computers you are not allowed to install any new softwares unless it is approved by business. So basically you got the idea why finding the installed softwares from computers is critical.
Before you run the CMPivot query, ensure the devices are online. Now in some cases not all computers in the SCCM device collection are online due to users located in different time zones. The CMPivot query will attempt to run on all devices but in case the device is offline or not contactable, you would get to know about it in the query output.
Table of Contents
Find Installed Software using SCCM CMPivot
Let’s find installed software using SCCM CMPivot query. Launch the SCCM console and go to Assets and Compliance > Overview > Device Collections. Choose the device collection against which you want to run the CMPivot. Right click the device collection and click Start CMPivot.
In the CMPivot tool, select the Query tab. If you run the InstalledSoftware query, it lists all the softwares installed on every computer in the device collection. The output is going to be definitely longer and you might have to export the list to a CSV file and review the results.
Find all Installed Softwares from Specific Computer with CMPivot
In some cases you need to find all installed softwares from a specific computer. If you want to find the installed softwares from a specific device or computer, then you use the below query.
InstalledSoftware | Where Device == 'device name'
The above query finds the installed softwares for the specified device. In addition to the product name, the output also contains the Publisher information, Product Version and Software Code.
Using CMPivot find Specific Installed Software on Specific Device
Often we are asked to find a specific installed software from a remote computer. Now that we know how to query installed softwares, it’s the matter of refining our above query and finding the product name.
Use the following query to find specific installed software (example Visual Studio Professional 2019) on specific computer.
InstalledSoftware | where Device == 'CORPPRO01' and ProductName == 'Visual Studio Professional 2019'
Make sure you replace the product name with one that you want to find and device name as well.
If you are not sure about the product name, you can change the operator to ProductName contains.
For example, if you want to find installed softwares that contain Studio in Product Name you can use the below query.
InstalledSoftware | where Device == 'CORPPRO01' and ProductName contains 'Studio'
Find Installed Software using Publisher Name with CMPivot
You can also run a SCCM CMPivot query to find installed software using Publisher name. If you are sure about the Publisher name use the == scalar operator otherwise you can use the Contains scalar operator.
For example, the below CMPivot query finds the installed software whose Publisher name contains VMware.
InstalledSoftware | where Device == 'CORPPRO01' and Publisher contains 'Vmware'
In addition to the above methods there are several alterations that you do in the query and find the installed software information. I hope this post helps in finding the installed softwares from your computers. If you have any questions, feel free to add them in comments section.
Is it possible to get a list of devices that *don’t* have a specific piece of software installed? Such as a RMM tool, or antivirus, etc.?
is it possible to have the list of applications installed in a specific computer in sccm in powershell
Nice Article, it really helped me
I know you mentioned how to scan softwares on specific machine i.e.
InstalledSoftware | Where Device == ‘device name’
what if you have many specific devices you want to check for in a go
is there a script for that.. i tried this but no luck
| where (Device !like ‘%PC001%’) | where (Device !like ‘%PC002%’)
| where Device == ‘PC001’ | where Device == ‘PC002’
Is it possible to query installed MS office updates bij KB number ?
Hey Prajwal – is it possible to run it against 5k machines?
The last time I’ve tried it, it didn’t work because we allow to run only signed scripts in our environment. Not sure if there is a fix for this now? I basically use the Scrips option to run live queries and find the info I need.