Creates a new discovery data object, which stores discovery data and is used to submit the collected data back to the Management Server.

MOMScriptAPI.CreateDiscoveryData(dwSourceType, bstrSourceId, bstrManagedEntityId)


Parameter Type Description



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



The ID of the source monitoring class.



The ID of the monitoring object.

Return Value

Type Description


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 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 the Operations Manager.


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

Version: Requires Operations Manager 2007


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

  Copy Code
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)
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

See Also

Send comments about this topic to Microsoft.