SCCM Hardware Inventory Failure Fix

3 04 2009

     Recently I discovered a problem with about 400 client computers in my SCCM site not reporting their Hardware Inventory information to the site server. Looking at the Inventory Agent log files, %windir%\system32\ccm\logs\InventoryAgent.log, I pinpointed the problem to a specific inventory class. These are the entries that were suspect

     The SMS_InstalledSoftware class belongs to the Asset Intelligence feature in SCCM 2007. In the case of my site I don’t use the Asset Intelligence features yet and have decided to turn off all the Asset Intelligence Reporting Classes. To perform this task please do the following:

1. Expand the Computer Management node in your site
2. Right click on the Asset Intelligence node and select Enable Asset Intelligence (sounds counter intuitive)
3. Select the Enable only the selected Asset Intelligence reporting classes radio button
4. Deselect all the Asset Intelligence classes and then select OK.

     On the next Hardware Inventory everything should come back to normal. I did not wish to wait for the next scheduled Hardware Inventory to run so I forced one by deploying the following script to all clients.

'Reset SMS Hardware Inventory Action to force a full HW Inventory Action
sInventoryActionID = "{00000000-0000-0000-0000-000000000001}"

' Get a connection to the "root\ccm\invagt" namespace (where the Inventory agent lives)

Dim oLocator Set oLocator = CreateObject("WbemScripting.SWbemLocator") Dim oServices Set oServices = oLocator.ConnectServer( , "root\ccm\invagt")

' Delete the specified InventoryActionStatus instance

oServices.Delete "InventoryActionStatus.InventoryActionID=""" & sInventoryActionID & """"

'Pause 3 seconds to allow the action to complete.
wscript.sleep 3000

'Run a SMS Hardware Inventory
Set cpApplet = CreateObject("CPAPPLET.CPAppletMgr")
Set actions = cpApplet.GetClientActions
For Each action In actions
     If Instr(action.Name,"Hardware Inventory") > 0 Then
     End if