Découverte des propriétés du serveur d’administration de Service Manager

Microsoft.SystemCenter.ServiceManager.SmManagementServerProperties.Discovery (Discovery)

Découvre les propriétés de Microsoft System Center Service Manager.

Knowledge Base article:

Résumé

Cette découverte remplit les propriétés de Service Manager. La découverte s’exécute immédiatement après l’importation, puis de nouveau à 13:00, heure de la synchronisation. Après cela, elle s’exécute toutes les 24 heures. L’heure de synchronisation, la fréquence et le délai d’expiration sont modifiables. La modification des arguments n’est pas recommandée.

Element properties:

TargetMicrosoft.SystemCenter.ServiceManager.SmManagementServer
EnabledTrue
Frequency86400
RemotableFalse

Object Discovery Details:

Discovered Classes and their attribuets:

Member Modules:

ID Module Type TypeId RunAs 
DS DataSource Microsoft.Windows.TimedScript.DiscoveryProvider Microsoft.SystemCenter.ServiceManager.DatabaseWriteActionAccount

Source Code:

<Discovery ID="Microsoft.SystemCenter.ServiceManager.SmManagementServerProperties.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.2010"/>
<DiscoveryClass TypeID="SM!Microsoft.SystemCenter.ServiceManager.SmManagementServer.2012"/>
</DiscoveryTypes>
<DataSource ID="DS" RunAs="SM!Microsoft.SystemCenter.ServiceManager.DatabaseWriteActionAccount" TypeID="Windows!Microsoft.Windows.TimedScript.DiscoveryProvider">
<IntervalSeconds>86400</IntervalSeconds>
<SyncTime>01:00</SyncTime>
<ScriptName>ManagementServerPropertyDiscovery.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: ManagementServerPropertyDiscovery.vbs
'
' Purpose - Populate properties of SM Management Server
'
' 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, discoveryData, serverRunningWorkflows, isRunningWorkflows, version

Set oAPI = CreateObject("Mom.ScriptAPI")

sourceId = WScript.Arguments(0)
managedEntityId = WScript.Arguments(1)
hostCompPrincipalName = WScript.Arguments(2)
version = WScript.Arguments(3)



'Creating discovery data
Call oAPI.LogScriptEvent("ManagementServerPropertyDiscovery.vbs", 3000, 4, "Starting discovery of Service Manager Management Server Properties.")

Set discoveryData = oAPI.CreateDiscoveryData(0, sourceId, managedEntityId)

'Get management group name from registry
Dim oReg, iResult, arrSubKeys, managementGroupName, oMgtServer, smDbHostName, smDbName
Set oReg = GetObject("winmgmts:\\" &amp; hostCompPrincipalName &amp; "\root\default:StdRegProv")
If Err &lt;&gt; 0 Then
Call oAPI.LogScriptEvent("ManagementServerPropertyDiscovery.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
managementGroupName = arrSubKeys(0)
iResult = oReg.GetStringValue(HKLM, "SOFTWARE\Microsoft\System Center\2010\Common\Database", "DatabaseServerName", smDbHostName)
If iResult = 0 then
iResult = oReg.GetStringValue(HKLM, "SOFTWARE\Microsoft\System Center\2010\Common\Database", "DatabaseName", smDbName)
If iResult = 0 then
'Instantiate Management Server Class
Call oAPI.LogScriptEvent("ManagementServerPropertyDiscovery.vbs", 3000, 4, "Discovered SCSM " &amp; version &amp; " Management Server Properties.")

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='SM!Microsoft.SystemCenter.ServiceManager.ManagementServer']/ManagementGroupName$", managementGroupName)
Call oMgtServer.AddProperty("$MPElement[Name='SM!Microsoft.SystemCenter.ServiceManager.SmManagementServer']/SmDbHostName$", smDbHostName)
Call oMgtServer.AddProperty("$MPElement[Name='SM!Microsoft.SystemCenter.ServiceManager.SmManagementServer']/SMDbName$", smDbName)
Call oMgtServer.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$",hostCompPrincipalName)

Dim connectionString, cnADOConnection, oResults,oQuery,sourceName
connectionString = "Provider=SQLOLEDB.1; Data Source=" &amp; smDbHostName &amp; "; Trusted_Connection=Yes; Initial Catalog=" &amp; smDbName &amp; ";"
Set cnADOConnection = CreateObject("ADODB.Connection")
cnADOConnection.Open connectionString
cnADOConnection.CommandTimeout = 300
oQuery = "select CONVERT(nvarchar(4000),B.Name) as ServerName from ScopedInstanceTargetClass SCT inner join ManagedType MT on MT.ManagedTypeId = SCT.ManagedTypeId inner join BaseManagedEntity B on B.BaseManagedEntityId = SCT.ScopedInstanceId where MT.TypeName ='Microsoft.SystemCenter.WorkflowTarget'"
Set oResults = CreateObject("ADODB.Recordset")
oResults.Open oQuery, cnADOConnection, 3, 3

If oResults.State &lt;&gt; 0 and oResults.RecordCount &gt; 0 Then
Do Until oResults.EOF
serverRunningWorkflows = oResults.Fields("ServerName")
oResults.MoveNext
Loop
End If
If oResults.State &lt;&gt; 0 Then
oResults.Close
End If
cnADOConnection.Close

if(isEmpty(serverRunningWorkflows)) Then
serverRunningWorkflows = ""
End If

If LCase(hostCompPrincipalName) = LCase(serverRunningWorkflows) then
isRunningWorkflows = true
Else
isRunningWorkflows = false
End If
Call oMgtServer.AddProperty("$MPElement[Name='SM!Microsoft.SystemCenter.ServiceManager.SmManagementServer']/isRunningWorkflows$",isRunningWorkflows)
Call discoveryData.AddInstance(oMgtServer)
End If
End If


End If
End If

Call oAPI.Return(discoveryData)
Call oAPI.LogScriptEvent("ManagementServerPropertyDiscovery.vbs", 3000, 4, "Finishined Discovering SCSM " &amp; version &amp;" Management Server Properties.")
WScript.Quit

</Script></ScriptBody>
<TimeoutSeconds>300</TimeoutSeconds>
</DataSource>
</Discovery>