Discovery for SCE Server

Microsoft.SystemCenter.Essentials.Internal.SCEServer.Discovery (Discovery)

Element properties:

TargetMicrosoft.SystemCenter.RootManagementServer
EnabledTrue
Frequency86400
RemotableFalse

Member Modules:

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

Source Code:

<Discovery ID="Microsoft.SystemCenter.Essentials.Internal.SCEServer.Discovery" Enabled="true" Target="SC!Microsoft.SystemCenter.RootManagementServer" ConfirmDelivery="false" Remotable="true" Priority="Normal">
<Category>Discovery</Category>
<DiscoveryTypes/>
<DataSource ID="DS" TypeID="Windows!Microsoft.Windows.TimedScript.DiscoveryProvider">
<IntervalSeconds>86400</IntervalSeconds>
<SyncTime/>
<ScriptName>DiscoverSceServer.vbs</ScriptName>
<Arguments>$MPElement$ $Target/Id$</Arguments>
<ScriptBody><Script>
'*************************************************************************
'Copyright (c) Microsoft Corporation. All rights reserved.

' Parameters that should be passed to this script
' 0 MPElement ID ($MPElement$)
' 1 Target Id for ME this rule is running against ($Target/Id$)
'*************************************************************************
Option Explicit
SetLocale("en-us")
CONST HKLM = &amp;H80000002

Dim oArgs
Set oArgs = WScript.Arguments
if oArgs.Count &lt;&gt; 2 Then
Quit()
End If

Dim SourceID, ManagedEntityId

SourceId = oArgs(0)
ManagedEntityId = oArgs(1)

Dim oAPI, oDiscoveryData

Set oAPI = MOMCreateObject("MOM.ScriptAPI")
set oDiscoveryData = oAPI.CreateDiscoveryData(0, SourceId, ManagedEntityId)

If DoDiscovery(oDiscoveryData) &gt;= 0 Then
Call oAPI.Return(oDiscoveryData)
Else
Quit()
End If

Function DoDiscovery(ByVal oDisc)

Dim objReg, sqlInstance, sqlPort
Set objReg = GetObject("winmgmts:root\default:StdRegProv")
If IsNull(objReg) Then
ScriptError "Error connecting to WMI Registry provide. " &amp; GetErrorString(Err)
Else
objReg.GetStringValue HKLM, "SOFTWARE\Microsoft\Microsoft Operations Manager\3.0\Setup", "DatabaseServerName", sqlInstance
objReg.GetStringValue HKLM, "SOFTWARE\Microsoft\Microsoft Operations Manager\3.0\Setup", "SqlInstancePort", sqlPort
End If

If IsNull(sqlInstance) = False Then

If IsNull(sqlPort) Then
sqlPort = ""
End If

Dim oEssentialsServerInstance

'' Discover Essentials Server
Set oEssentialsServerInstance = oDiscoveryData.CreateClassInstance("$MPElement[Name='System.SCE.Server']$")

With oEssentialsServerInstance
.AddProperty "$MPElement[Name='System.SCE.Server']/SqlServerInstance$", sqlInstance
.AddProperty "$MPElement[Name='System.SCE.Server']/SqlServerPort$", sqlPort
End With

call oDisc.AddInstance(oEssentialsServerInstance)
End If

DoDiscovery = 0
End Function

'*************************************************************************
Class Error
Private m_lNumber
Private m_sSource
Private m_sDescription
Private m_sHelpContext
Private m_sHelpFile
Public Sub Save()
m_lNumber = Err.number
m_sSource = Err.Source
m_sDescription = Err.Description
m_sHelpContext = Err.HelpContext
m_sHelpFile = Err.helpfile
End Sub
Public Sub Raise()
Err.Raise m_lNumber, m_sSource, m_sDescription, m_sHelpFile, m_sHelpContext
End Sub
Public Sub Clear()
m_lNumber = 0
m_sSource = ""
m_sDescription = ""
m_sHelpContext = ""
m_sHelpFile = ""
End Sub
Public Default Property Get Number()
Number = m_lNumber
End Property
Public Property Get Source()
Source = m_sSource
End Property
Public Property Get Description()
Description = m_sDescription
End Property
Public Property Get HelpContext()
HelpContext = m_sHelpContext
End Property
Public Property Get HelpFile()
HelpFile = m_sHelpFile
End Property
End Class
'*************************************************************************

Function ThrowScriptErrorNoAbort(ByVal sMessage, ByVal oErr)
'
' ThrowScriptError :: Creates an event and sends it back to the mom server
'
'*************************************************************************

Dim sErrDescription, sErrNumber
sErrDescription = oErr.Description
sErrNumber = oErr.Number

End Function

'*************************************************************************
Function ThrowScriptError(Byval sMessage, ByVal oErr)
'
' ThrowScriptError :: Creates an event and sends it back to the mom server
'
'*************************************************************************
On Error Resume Next
ThrowScriptErrorNoAbort sMessage, oErr
Quit()
End Function

'*************************************************************************
Function MomCreateObject(ByVal sProgramId)
Dim oError
Set oError = New Error

On Error Resume Next
Set MomCreateObject = CreateObject(sProgramId)
oError.Save
On Error Goto 0

If oError.Number &lt;&gt; 0 Then ThrowScriptError "Unable to create automation object '" &amp; sProgramId &amp; "'", oError
End Function
'*************************************************************************

Function Quit()

WScript.Quit()

End Function
'*************************************************************************

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