How to inventory Windows Store apps

Dakota
Dakota Clark|December 3, 2018
How to Inventory Windows Store Apps
How to Inventory Windows Store Apps

So you wanna know what Windows Store apps are installed to a computer? Microsoft’s new method of software distribution has been a pain point for software inventory, but thankfully we’ve found a method to help gather what apps are installed to a computer and today we’ll talk about how to inventory Windows Store Apps.

hackerman meme

Inventory Windows Store Apps

To start scanning for this information you’ll need to create a WMI scanner (will require an Enterprise license, register for a free trial here if you haven’t already). From PDQ Inventory navigate to Options > Scan Profiles > New. Once the New Scan Profile window appears, give it a name and, optionally, a trigger.

options - scan profiles
PDQ inventory - Windows Apps - Details

Once the name (and trigger) have been set click Add > WMI. Here we’ll also set a name for the WMI scanner and set the WQL query.

New - WMI - Add
Edit WMI Scanner

Leave the namespace to ROOT\CIMV2. The WQL query is SELECT * FROM Win32_InstalledStoreProgram. Once that is done, close and save all the open windows and you’ll have a brand new scanner to run; and what else would you do with it now but scan?

The Scan is Done…Now What?

Once your first scan is done we can look at some data. You could find that if you run the scanner on every computer that some may return “WMI invalid class;” not to worry, as this WMI class will only work on Windows 8 and later.

Now that the first scan has been run, open a Windows 8, 8.1, or Windows 10 computer and navigate to the WMI section and select the name of the WMI scanner you had just created to see all the wonderful data!

WMI scanned results

Just gaze upon the beauty! What once has been so elusive has finally been reined in! Here we can see what architecture the app was compiled for, what the program ID is (useful for uninstall scripts *wink wink*), version, and vendor name. If you find the language information less than useful you can manually find the value by number here (boo!) or use PowerShell to convert the value (yay!) like so:

[System.Globalization.Cultureinfo]::GetCultureInfo(1033)

While not documented I assume the 0 means the language is not set. You might also be wondering why the vendor names look suspiciously like the subject info in a certificate. That’s because it is! Microsoft requires all store applications be signed with a certificate.

Dakota
Dakota Clark

With one foot in development and one foot in operations, Dakota has over ten years of experience in information technology and has presented at the PowerShell + DevOps Global Summit. He's an advocate for automating the boring things and collaborating on the stuff that matters. Das ist mir Wurst! Dakota was a PDQ employee.

Related articles