MOMScriptAPI.CreateDiscoveryData Method

Updated: January 31, 2012

Applies To: System Center 2012 - Operations Manager

Creates a new MOMDiscoveryData object, which stores discovery data and is used to submit the collected data back to the management server.

MOMScriptAPI.CreateDiscoveryData(dwSourceType, bstrSourceId, bstrManagedEntityId)

Parameters

 

Parameter Type Description

dwSourceType

Long

The source type. The value 0 (Rule) should always be used for the source type.

bstrSourceId

String

The ID of the source monitoring class.

bstrManagedEntityId

String

The ID of the monitoring object.

 

Type Description

Object

A new instance of the MOMDiscoveryData object.

To create discovery data, you must first create a MOMScriptAPI object.

After a MOMScriptAPI object is created, you can create a discovery data object. The MOMScriptAPI.CreateDiscoveryData method takes three parameters—dwSourceType, bstrSourceId, and bstrManagedEntityId.

The globally unique identifier (GUID) of the discovery object that launched the script is passed into the script as $MPElement$, and the GUID of the object that the script is executing against is passed in as $Target/Id$.

After the MOMDiscoveryData object is created, you can create instances and relationships to be submitted to Operations Manager.

Platforms: Requires Windows Server 2003, Windows Vista, or Windows Server 2008

Version: Requires Operations Manager 2007 or System Center 2012 – Operations Manager

This example creates a discovery data object as identified by the input parameters, and it adds property values to any files in the identified folder on the target computer.

Option Explicit
Dim oArgs
Set oArgs = WScript.Arguments

Dim oAPI
Set oAPI = CreateObject("MOM.ScriptAPI")

Dim SourceId, ManagedEntityId, targetComputer
' SourceId is the GUID of the discovery object that runs the script.
SourceId = oArgs(0)
' ManagedEntityId is the GUID of the computer class that is targeted by the script.
ManagedEntityId = oArgs(1)
' targetComputer is the Fully Qualified Domain Name
' of the computer targeted by the script. The FQDN
' is in Arg(2) of the command prompt.
targetComputer = oArgs(2)

Dim oFSO, oDiscoveryData, oInst
Set oDiscoveryData = oAPI.CreateDiscoveryData(0, SourceId, ManagedEntityId)
Set oFSO = CreateObject("Scripting.FileSystemObject")
If (oFSO.FolderExists("C:Appy")) Then
	' Create the application instance.
	Set oInst = oDiscoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Demo.Scripting.Appy']$")
	' Define the property values.
	Call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", targetComputer)
	Call oInst.AddProperty("$MPElement[Name='Microsoft.Demo.Scripting.AppY']/Version$", "2.0")
	Call oInst.AddProperty("$MPElement[Name='Microsoft.Demo.Scripting.AppY']/Path$", "C:\AppY")
	Call oInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "Application Y")
	Call oDiscoveryData.AddInstance(oInst)
	' Discover the application's components.
	Dim oFolder, ofile
	Set oFolder = oFSO.GetFolder("C:\Appy")
	' Create a separate class instance for each file in the folder.
	For Each oFile in oFolder.Files
		Set oInst = oDiscoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Demo.Scripting.AppYComponent']$")
		' Define the property values for the class.
		' The available properties are detemined by the
		'Management Pack that defines the class.
		Call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", targetComputer)
		Call oInst.AddProperty("$MPElement[Name='Microsoft.Demo.Scripting.AppYComponent']/ID$", StripExtension(oFile.Name))
		Call oInst.AddProperty("$MPElement[Name='Microsoft.Demo.Scripting.AppYComponent']/FileName$", oFile.Name)
		Call oInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$",StripExtension(oFile.Name))
		Call oDiscoveryData.AddInstance(oInst)
	Next
End If

' Submit the discovery data to the Operations Manager database.
Call oAPI.Return(oDiscoveryData)

' A helper function to remove the extension from a file name.
Function StripExtension (sFile)
	StripExtension = Left(sFile, Len(sFile) -4)
End Function

Reference