ConfigMgr 2012 Client Hardware Inventory Agent Discovery

ConfigMgr.2012.Client.Discovery.ConfigMgr.2012.Client.App.Component.Hardware.Inventory.Agent.Discovery (Discovery)

Discovers the enabled ConfigMgr 2012 client Hardware Inventory Agent

Element properties:

TargetConfigMgr.2012.Client.Library.ConfigMgr.2012.Client.Application
EnabledTrue
Frequency43200
RemotableFalse

Object Discovery Details:

Discovered Classes and their attribuets:

Member Modules:

ID Module Type TypeId RunAs 
DS DataSource Microsoft.Windows.TimedScript.DiscoveryProvider Default

Source Code:

<Discovery ID="ConfigMgr.2012.Client.Discovery.ConfigMgr.2012.Client.App.Component.Hardware.Inventory.Agent.Discovery" Target="C2CL!ConfigMgr.2012.Client.Library.ConfigMgr.2012.Client.Application" Enabled="true" ConfirmDelivery="false" Remotable="true" Priority="Normal">
<Category>Discovery</Category>
<DiscoveryTypes>
<DiscoveryClass TypeID="C2CL!ConfigMgr.2012.Client.Library.ConfigMgr.2012.Client.App.Component.Hardware.Inventory.Agent">
<Property TypeID="System!System.Entity" PropertyID="DisplayName"/>
</DiscoveryClass>
</DiscoveryTypes>
<DataSource ID="DS" TypeID="Windows!Microsoft.Windows.TimedScript.DiscoveryProvider">
<IntervalSeconds>43200</IntervalSeconds>
<SyncTime/>
<ScriptName>CM12ClientHInvAgentDiscovery.vbs</ScriptName>
<Arguments>$MPElement$ $Target/Id$ $Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/PrincipalName$</Arguments>
<ScriptBody><Script>Option Explicit
'On Error Resume Next

Dim oArgs, HInvAgentEnabled, HInvAgentVersion
Dim oAPI, oDiscoveryData, oInst
Dim objWMIService,col, item
Dim SourceID, ManagedEntityId, TargetComputer

Set oArgs = WScript.Arguments
if oArgs.Count &lt; 3 Then
Wscript.Quit -1
End If
SourceId = oArgs(0)
ManagedEntityId = oArgs(1)
TargetComputer = oArgs(2)

'Discover Machine Policy AcutalConfig for Hardware Inventory Agent settings
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" + TargetComputer + "\root\ccm\Policy\Machine\ActualConfig")
Set col = objWMIService.ExecQuery _
("Select * from CCM_HardwareInventoryClientConfig WHERE SiteSettingsKey = 1")
For Each item in col
HInvAgentEnabled = item.Enabled
Next

'Discover Hardware Inventory Agent Version if it is enabled
If HInvAgentEnabled = True Then
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" + TargetComputer + "\root\ccm")
Set col = objWMIService.ExecQuery _
("Select * from CCM_InstalledComponent WHERE Name = 'SmsHardwareInventory'")
For Each item in col
HInvAgentVersion = item.Version
Next
End if

'Submit discovery data
Set oAPI = CreateObject("MOM.ScriptAPI")
set oDiscoveryData = oAPI.CreateDiscoveryData(0, SourceID, ManagedEntityId)

If HInvAgentEnabled = True Then
set oInst = oDiscoveryData.CreateClassInstance("$MPElement[Name='C2CL!ConfigMgr.2012.Client.Library.ConfigMgr.2012.Client.App.Component.Hardware.Inventory.Agent']$")
Call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", TargetComputer)
Call oInst.AddProperty("$MPElement[Name='C2CL!ConfigMgr.2012.Client.Library.ConfigMgr.2012.Client.App.Component.Hardware.Inventory.Agent']/Version$", HInvAgentVersion)
Call oInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", TargetComputer)
Call oDiscoveryData.AddInstance(oInst)
End If
'Submit the discovery data to the management group.
oAPI.Return(oDiscoveryData)
</Script></ScriptBody>
<TimeoutSeconds>120</TimeoutSeconds>
</DataSource>
</Discovery>