Service Manager Roll-up Discovery

Microsoft.SystemCenter.ServiceManager.SmManagementGroup.Discovery (Discovery)

Discovers properties of Service Manager Management Group

Knowledge Base article:

Summary

Disabling this discovery will prevent the instances of Service Manager from being populated in the diagram view.Discovery runs immedietely after being imported followed by another run at 14:00, time to do initial discovery. Following this it runs at a 24 hour interval. Initial discovery time,Interval Seconds as well as timeout can be changed.Changing arguments is not recommended.

Element properties:

TargetMicrosoft.SystemCenter.ServiceManager.SmManagementServer
EnabledTrue
Frequency86400
RemotableFalse

Object Discovery Details:

Discovered Classes and their attribuets:
Discovered relationships and their attribuets:

Member Modules:

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

Source Code:

<Discovery ID="Microsoft.SystemCenter.ServiceManager.SmManagementGroup.Discovery" Enabled="true" Target="SM!Microsoft.SystemCenter.ServiceManager.SmManagementServer" ConfirmDelivery="false" Remotable="true" Priority="Normal">
<Category>Discovery</Category>
<DiscoveryTypes>
<DiscoveryClass TypeID="SM!Microsoft.SystemCenter.ServiceManager.SmManagementServer"/>
<DiscoveryClass TypeID="SM!Microsoft.SystemCenter.ServiceManager.SmManagementGroup"/>
<DiscoveryClass TypeID="SM!Microsoft.SystemCenter.ServiceManager.Application"/>
<DiscoveryRelationship TypeID="SM!Microsoft.SystemCenter.ServiceManager.SmContainsMgGroups"/>
<DiscoveryRelationship TypeID="SM!Microsoft.SystemCenter.ServiceManager.SmMgtGroupContainsSmMgtServer"/>
</DiscoveryTypes>
<DataSource ID="DS" TypeID="Windows!Microsoft.Windows.TimedScript.DiscoveryProvider">
<IntervalSeconds>86400</IntervalSeconds>
<SyncTime>02:00</SyncTime>
<ScriptName>SmManagementGroupDiscovery.vbs</ScriptName>
<Arguments>$MPElement$ $Target/Id$ $Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/PrincipalName$ $Target/Property[Type="SM!Microsoft.SystemCenter.ServiceManager.ManagementServer"]/Version$</Arguments>
<ScriptBody><Script>'*************************************************************************
' ScriptName: SmManagementGroupDiscovery.vbs
'
' Purpose - Populate properties of SM Management Server Group
'
' Parameters - 0 - discovery id
' 1 - Target managed entity id
' 2 - Host Computer Principal Name
' 3 - Version
'*************************************************************************
Option Explicit
SetLocale("en-us")
On Error Resume Next

Dim oAPI, sourceId, managedEntityId, hostCompPrincipalName, version, discoveryData

Set oAPI = CreateObject("Mom.ScriptAPI")
sourceId = WScript.Arguments(0)
managedEntityId = WScript.Arguments(1)
hostCompPrincipalName = WScript.Arguments(2)
version = WScript.Arguments(3)

Call oAPI.LogScriptEvent("SmManagementServerGroupDiscovery.vbs", 3000, 4, "Starting discovery of Service Manager Management Server Group.")
Set discoveryData = oAPI.CreateDiscoveryData(0, sourceId, managedEntityId)

Dim oReg, iResult, arrSubKeys, managementGroupName, oMgtServer, oMgtGroup, oMgtGroupContainsMgtServer, oSmApp, oSmContainsMg
Set oReg = GetObject("winmgmts:\\" &amp; hostCompPrincipalName &amp; "\root\default:StdRegProv")
If Err &lt;&gt; 0 Then
Call oAPI.LogScriptEvent("SmManagementServerDiscovery.vbs", 3000, 4, "Unable to bind to WMI registry provider on " &amp; hostCompPrincipalName &amp; ". Terminating Discovery.")
Call oAPI.Return(discoveryData)
WScript.Quit
End if
Const HKLM = &amp;H80000002

If version = "2010" or version = "2012" then
iResult = oReg.Enumkey(HKLM, "SOFTWARE\Microsoft\Microsoft Operations Manager\3.0\Server Management Groups", arrSubKeys)
If iResult = 0 then
Call oAPI.LogScriptEvent("SmManagementServerGroupDiscovery.vbs", 3000, 4, "Discovered SCSM " &amp; version &amp;" Management Server Group.")
managementGroupName = arrSubKeys(0)
'Instantiate Management Server Class
If version = "2010" then
Set oMgtServer = discoveryData.CreateClassInstance("$MPElement[Name='SM!Microsoft.SystemCenter.ServiceManager.SmManagementServer.2010']$")
ElseIf version = "2012" then
Set oMgtServer = discoveryData.CreateClassInstance("$MPElement[Name='SM!Microsoft.SystemCenter.ServiceManager.SmManagementServer.2012']$")
End If
Call oMgtServer.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$",hostCompPrincipalName)
Call discoveryData.AddInstance(oMgtServer)

'Instantiate ManagementGroup Class

Set oMgtGroup = discoveryData.CreateClassInstance("$MPElement[Name='SM!Microsoft.SystemCenter.ServiceManager.SmManagementGroup']$")
Call oMgtGroup.AddProperty("$MPElement[Name='SM!Microsoft.SystemCenter.ServiceManager.ManagementGroup']/GroupName$", managementGroupName)
Call oMgtGroup.AddProperty("$MPElement[Name='SM!Microsoft.SystemCenter.ServiceManager.ManagementGroup']/Version$", version)
Call oMgtGroup.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", managementGroupName)
Call discoveryData.AddInstance(oMgtGroup)

'Instantiate SM Management Group Contains SM Management Server Relationship

Set oMgtGroupContainsMgtServer = discoveryData.CreateRelationshipInstance("$MPElement[Name='SM!Microsoft.SystemCenter.ServiceManager.SmMgtGroupContainsSmMgtServer']$")
oMgtGroupContainsMgtServer.Source = oMgtGroup
oMgtGroupContainsMgtServer.Target = oMgtServer
Call discoveryData.AddInstance(oMgtGroupContainsMgtServer)

'Instantiate Service Manager Class

Set oSmApp = discoveryData.CreateClassInstance("$MPElement[Name='SM!Microsoft.SystemCenter.ServiceManager.Application']$")
Call oSmApp.AddProperty("$MPElement[Name='SM!Microsoft.SystemCenter.ServiceManager.Application']/InstanceName$", "Microsoft System Center Service Manager")
Call oSmApp.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "Service Manager")
Call discoveryData.AddInstance(oSmApp)

'Instantiate Service Manager contains Management Groups Relationship

Set oSmContainsMg = discoveryData.CreateRelationshipInstance("$MPElement[Name='SM!Microsoft.SystemCenter.ServiceManager.SmContainsMgGroups']$")
oSmContainsMg.Source = oSmApp
oSmContainsMg.Target = oMgtGroup
Call discoveryData.AddInstance(oSmContainsMg)
End If

End If

'End If
Call oAPI.Return(discoveryData)
Call oAPI.LogScriptEvent("SmManagementServerGroupDiscovery.vbs", 3000, 4, "Ending discovery of Service Manager Management Server Group.")

WScript.Quit</Script></ScriptBody>
<TimeoutSeconds>300</TimeoutSeconds>
</DataSource>
</Discovery>