I can’t even begin to count the number of times I’ve recommended to someone that they turn off System Center Configuration Manager’s (SCCM) Software Inventory! Issues with SCCM Software Inventory (SW Inv) come up all the time across many of the forums and mailing lists on which I am active. I always point folks back to my blog posts to explain why I am telling them to turn it off: Slow Software Inventory Cycle in SCCM 2012, Configuration Manager Inventory Cycle Recommendations and Updated – Troubleshoot ConfigMgr Hardware Inventory Issues. Yes, that last blog post is about hardware inventory, but for troubleshooting SW Inv issues it works fine too.
SCCM Software Inventory shouldn’t be called SCCM Software Inventory at all. Instead, it should be called SCCM File Inventory as it actually only collects file header details. Inevitably, a new SCCM admin will enable it and add either *.* or *.exe; in either case, this is bad news. When this happens it is almost always done in a manner that results in poor performance on ConfigMgr clients. What do I mean? Think about how much work the ConfigMgr client has to do in order to collect this information. SW Inv is generally set up to inventory all folders and all hard drives. That’s a lot of work.
Don’t take only my word for it. A LARGE number of MVPs, if not all, tell people to use Configuration Items (CIs) instead of SW Inv to look for a single file. However, CIs are a bit harder to setup whereas enabling SW Inv and adding *.* or *.exe seems easier. There are resources, however, to help you out with CIs. For example, I put together detailed instructions on how to create a CI in this blog post set: Create a Configuration Item to Ensure that the No_SMS_On_Drive.SMS File is on All Site Servers.
If you are still intent on using SW Inv, despite my recommendation, then read on as I will show you the proper way to set it up correctly.
How to Setup SCCM Software Inventory
In this example, I will ONLY inventory iexplore.exe (also known as Internet Explorer) within BOTH %ProgramFiles%\Internet Explorer and %ProgramFiles(x86)%\Internet Explorer.
Start by opening the Configuration Manager console, select the Administration node and then Client Settings.
Right-click on Default Client Settings, and then click on Properties.
In the Default Settings, select the Software Inventory node. Now, click on the Schedule… button.
In the Configure Client Setting window, change the Run every option to 14 days and then click on the OK button to accept the new setting.
Back in the Default Settings window, click on the Set Types… button.
In the Inventoried File Properties window, enter iexplore.exe in the file name text box. Next click on the Set… button.
In the Path Properties window, select the Variable or path name option. In the text box, enter %ProgramFiles%\Internet Explorer. Next deselect the Search subfolders checkbox before clicking on the OK button twice.
Repeat the process again to add a second iexplore.exe within the %ProgramFiles(x86)%\Internet Explorer folder. Your results should look similar to the above screenshot. Click on the OK button to apply these settings.
Back on the Default Settings window, click OK to apply all changes.
Now all of your clients will be using the most efficient way possible to return results for iexplore.exe with SCCM Software Inventory. It will still take some time to collect the SW Inv results. This can range anywhere from four hours (see Slow Software Inventory Cycle in SCCM 2012 and CMCB) to 44-minutes when clients are using the more efficient process (see How Do You Determine the Length of a Software Inventory Scan Cycle?).
If you have any questions about how to setup SCCM Software Inventory, please feel free to contact me @GarthMJ.