Dell Remote Access Controller Discovery

Dell.DRAC.Discovery.DSMT (DataSourceModuleType)

The discovery module for the Dell Remote Access Controllers

Element properties:

TypeDataSourceModuleType
IsolationAny
AccessibilityPublic
RunAsDefault
OutputTypeSystem.Discovery.Data

Member Modules:

ID Module Type TypeId RunAs 
DS DataSource System.Discovery.Scheduler Default
P1 ProbeAction System.SnmpProbe Default
P2 ProbeAction Microsoft.Windows.ScriptDiscoveryProbe Default

Overrideable Parameters:

IDParameterTypeSelectorDisplay NameDescription
Intervalint$Config/Interval$IntervalInterval
LogLevelint$Config/LogLevel$Log LevelDell DRAC Discovery Logging.

Source Code:

<DataSourceModuleType ID="Dell.DRAC.Discovery.DSMT" Accessibility="Public" Batching="false">
<Configuration>
<IncludeSchemaTypes>
<SchemaType>System!System.Discovery.MapperSchema</SchemaType>
<SchemaType>System!System.ExpressionEvaluatorSchema</SchemaType>
</IncludeSchemaTypes>
<xsd:element minOccurs="1" name="IPAddress" type="xsd:string"/>
<xsd:element minOccurs="1" name="DeviceKey" type="xsd:string"/>
<xsd:element minOccurs="1" name="CommunityString" type="xsd:string"/>
<xsd:element minOccurs="1" name="Version" type="xsd:string"/>
<xsd:element minOccurs="1" name="Interval" type="xsd:integer"/>
<xsd:element minOccurs="1" name="LogLevel" type="xsd:integer"/>
<xsd:element minOccurs="1" name="PortNumber" type="xsd:integer"/>
<xsd:element name="SnmpVarBinds">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="unbounded" name="SnmpVarBind">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="OID" type="xsd:string"/>
<xsd:element name="Syntax" type="xsd:integer"/>
<xsd:element name="Value">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="VariantType" type="xsd:integer" use="optional"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</Configuration>
<OverrideableParameters>
<OverrideableParameter ID="Interval" Selector="$Config/Interval$" ParameterType="int"/>
<OverrideableParameter ID="LogLevel" Selector="$Config/LogLevel$" ParameterType="int"/>
</OverrideableParameters>
<ModuleImplementation Isolation="Any">
<Composite>
<MemberModules>
<DataSource ID="DS" TypeID="System!System.Discovery.Scheduler">
<Scheduler>
<SimpleReccuringSchedule>
<Interval Unit="Seconds">$Config/Interval$</Interval>
</SimpleReccuringSchedule>
<ExcludeDates/>
</Scheduler>
</DataSource>
<ProbeAction ID="P1" TypeID="Snmp!System.SnmpProbe">
<IsWriteAction>false</IsWriteAction>
<IP>$Config/IPAddress$</IP>
<CommunityString>$Config/CommunityString$</CommunityString>
<!--to discover snmp v1 devices-->
<!--<Version>$Config/Version$</Version>-->
<SnmpVarBinds>$Config/SnmpVarBinds$</SnmpVarBinds>
</ProbeAction>
<ProbeAction ID="P2" TypeID="Windows!Microsoft.Windows.ScriptDiscoveryProbe">
<ScriptName>DellDRACDiscovery.vbs</ScriptName>
<Arguments>CommunityString #*# $Config/CommunityString$ #*# IPAddress #*# $Config/IPAddress$ #*# SourceId #*# $MPElement$ #*# ManagedEntityId #*# $Target/Id$ #*# Loglevel #*# $Config/LogLevel$ #*# SNMPErrorCode #*# $Data/ErrorCode$ #*# DeviceKey #*# $Config/DeviceKey$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[1]/OID$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[1]/Value$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[2]/OID$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[2]/Value$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[3]/OID$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[3]/Value$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[4]/OID$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[4]/Value$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[5]/OID$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[5]/Value$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[6]/OID$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[6]/Value$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[7]/OID$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[7]/Value$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[8]/OID$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[8]/Value$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[9]/OID$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[9]/Value$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[10]/OID$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[10]/Value$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[11]/OID$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[11]/Value$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[12]/OID$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[12]/Value$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[13]/OID$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[13]/Value$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[14]/OID$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[14]/Value$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[15]/OID$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[15]/Value$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[16]/OID$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[16]/Value$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[17]/OID$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[17]/Value$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[18]/OID$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[18]/Value$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[19]/OID$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[19]/Value$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[20]/OID$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[20]/Value$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[21]/OID$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[21]/Value$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[22]/OID$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[22]/Value$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[23]/OID$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[23]/Value$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[24]/OID$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[24]/Value$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[25]/OID$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[25]/Value$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[26]/OID$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[26]/Value$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[27]/OID$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[27]/Value$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[28]/OID$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[28]/Value$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[29]/OID$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[29]/Value$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[30]/OID$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[30]/Value$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[31]/OID$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[31]/Value$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[32]/OID$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[32]/Value$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[33]/OID$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[33]/Value$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[34]/OID$ #*# $Data[Default='']/SnmpVarBinds/SnmpVarBind[34]/Value$ ### </Arguments>
<ScriptBody><Script>
'**********************************************************************************
' Script Name - DellDRACDiscovery
' Author: Rashma
'
' Description:
' Discovers all Dell Remote Access Controllers.
'
' (c) Copyright &#xA9; 2009&#x2013; 2017 Dell Inc, or its subsidiaries. All Rights Reserved
'**********************************************************************************
Option Explicit
'On Error Resume Next
SetLocale("en-us")

Dim IPAddress, CommunityString, Version, Timeout, Interval, LogLevel
Dim SNMPSuccess, strErrorCode, logMessage, DeviceKey, UID
Dim oAPI, oDiscoveryData, oInstance, oInstance1, oInstance2, oRelationship
Dim SourceId, ManagedEntityId, regHostName
Dim Classifier, DRACType
Dim AttrMap, ValueMap
Dim oArgs
Dim fileSize, strOutFile, objLogFSO, objLogTextFile, strFileName

Set oArgs = WScript.Arguments
InitLookups()
GetArguments()

logLevel = CInt(ValueMap.Item("Loglevel"))
'logLevel = 1
InitLog()

MOMDebugLog 1,"--------------------------------------------------"
MOMDebugLog 1, "Entered DRAC discovery"

MOMDebugLog 1,"Display the Content in HashMaps for Debugging."
MOMDebugLog 1,"--------------------Attribute MAP------------------"
DisplayMap(AttrMap)
MOMDebugLog 1,"--------------------Value Map-----------------------"
DisplayMap(ValueMap)

Classifier = DRACClassifier()
MOMDebugLog 1, "DRACClassifier:" &amp; Classifier

DRACType = DRACTypeClassifier()
MOMDebugLog 1, "DRACTypeClassifier:" &amp; DRACType

MOMDebugLog 1, "Creating oDiscoveryData(" &amp; ValueMap.Item("SourceId") &amp; "," &amp; ValueMap.Item("ManagedEntityId") &amp; ")"
Set oAPI = CreateObject("MOM.ScriptAPI")
Set oDiscoveryData = oAPI.CreateDiscoveryData(0,ValueMap.Item("SourceId"),ValueMap.Item("ManagedEntityId"))

'Do not discover other than DRAC
If StrComp(Classifier, "Dell.RemoteAccess.RAC") = 0 Then
MOMDebugLog 1, "it is RAC device"
Else
MOMDebugLog 1, "it is not a RAC device. quit the program"
EmptyDiscovery()
Wscript.Quit(0)
End If

'Do not discover empty ServiceTag/ChassisTag
Dim rmEmptyUID
rmEmptyUID = ValueMap.Item("ServiceTag")
If (StrComp(rmEmptyUID, "") = 0) OR (StrComp(rmEmptyUID, "Not Available") = 0) Then
MOMDebugLog 1, "UID Can not be null. Hence, can not discover:" &amp; ValueMap.Item("IPAddress")
EmptyDiscovery()
Wscript.Quit(0)
End If

MOMDebugLog 1, "Getting Health Service hosted"
'Get Principal Name
regHostName = GetRegistryValue("HKEY_LOCAL_MACHINE\Software\Dell Computer Corporation\Dell Management Pack Suites\MSHostname")


if StrComp(DRACType, "Dell.RemoteAccess.DRAC5") = 0 Then
CreateDRAC5()
Elseif StrComp(DRACType, "Dell.RemoteAccess.iDRAC6Modular") = 0 Then
CreateIDRAC6Modular()
Elseif StrComp(DRACType, "Dell.RemoteAccess.iDRAC6Monolithic") = 0 Then
CreateIDRAC6Monolithic()
Elseif StrComp(DRACType, "Dell.RemoteAccess.iDRAC7Monolithic") = 0 Then
CreateIDRAC7Monolithic()
Elseif StrComp(DRACType, "Dell.RemoteAccess.iDRAC7Modular") = 0 Then
CreateIDRAC7Modular()
Elseif StrComp(DRACType, "Dell.RemoteAccess.iDRAC8Monolithic") = 0 Then
CreateIDRAC8Monolithic()
Elseif StrComp(DRACType, "Dell.RemoteAccess.iDRAC8Modular") = 0 Then
CreateIDRAC8Modular()
Else
MOMDebugLog 1, "The given ip in a different discovery block. Hence quit."
EmptyDiscovery()
Wscript.Quit(0)
End If

Call oAPI.Return(oDiscoveryData)
Set oDiscoveryData = Nothing
Set oAPI = Nothing

logMessage = "INFO : Script - DellCMCDiscovery : End()"
MOMDebugLog 1, logMessage
MOMDebugLog 1,"--------------------------------------------------"

'#######################################################
Function InitLog()
If logLevel &lt;&gt; 0 Then
strFileName = "Dell_" &amp; "Discovery_" &amp; ValueMap.Item("IPAddress") &amp; ".log"
Const ForAppending = 8
Const ForWriting = 2
Const MaxFileSize = 524288 'File Size is limited to 512 KB

dim wsShell : Set wsShell = Createobject("WScript.Shell")
dim wshSysEnv : Set wshSysEnv = wsShell.Environment
dim tFolder : tFolder = wshSysEnv("TEMP")
dim wshPrcEnv : Set wshPrcEnv = wsShell.Environment("Process")
tFolder = Replace(tFolder, "%SystemRoot%", wshPrcEnv("SYSTEMROOT"), 1, -1, vbTextCompare)

Set objLogFSO = CreateObject("Scripting.FileSystemObject")
If Not objLogFSO.FolderExists(tFolder) Then
objLogFSO.CreateFolder(tFolder)
End If
tFolder = tFolder &amp; "\DRACLogs"
If Not objLogFSO.FolderExists(tFolder) Then
objLogFSO.CreateFolder(tFolder)
End If
strOutFile = tFolder &amp; "\" &amp; strFileName
If Not objLogFSO.FileExists(strOutFile) Then
Set objLogTextFile = objLogFSO.CreateTextFile(strOutFile)
objLogTextFile.Close()
End If
fileSize = objLogFSO.GetFile(strOutFile).Size
If (fileSize &gt; MaxFileSize) Then
Dim dateStr, datesuffix, timesuffix, subStrLoc, newFilename
dateStr = CDate(Now())
datesuffix = ( Year(dateStr)*100 + Month(dateStr) )*100 + Day(dateStr)
timesuffix = Right((Hour(dateStr)*100+Minute(dateStr))*100+Second(dateStr)+1e7, 6)
subStrLoc = Instr(1, strOutFile,".log")
newFilename = Mid(strOutFile,1,(subStrLoc-1))
newFilename = newFilename &amp;"-"&amp; datesuffix &amp;"-"&amp;timesuffix&amp;".log"
objLogFSO.MoveFile strOutFile, newFilename
Set objLogTextFile = objLogFSO.OpentextFile(strOutFile, ForWriting, True)
Else
Set objLogTextFile = objLogFSO.OpentextFile(strOutFile, ForAppending, True)
End If
logMessage = "INFO: Script - DellDRACDiscovery : Start()"
MOMDebugLog 1, logMessage
Err.Clear
End If
End Function
Sub MOMDebugLog (ByVal debugLevel, ByVal Message)
On Error Resume Next
If (debugLevel &gt; 0) and (debugLevel &lt;= logLevel) Then
objLogTextFile.WriteLine(Now() &amp; "-" &amp; IPAddress &amp; " ---- " &amp; Message)
Err.Clear
End If
End Sub
' End of Logheader

'############################
'Get the DRACType
Function DRACTypeClassifier
Dim ProductType
ProductType = ValueMap.Item("ProductType")
Select Case ProductType
case "6": DRACTypeClassifier = "Dell.RemoteAccess.DRAC5"
case "9": DRACTypeClassifier = "Dell.RemoteAccess.iDRAC6Modular"
case "10" DRACTypeClassifier = "Dell.RemoteAccess.iDRAC6Monolithic"
case "13": DRACTypeClassifier = "Dell.RemoteAccess.iDRAC6Monolithic"
case "16": DRACTypeClassifier = "Dell.RemoteAccess.iDRAC7Monolithic"
case "17": DRACTypeClassifier = "Dell.RemoteAccess.iDRAC7Modular"
case "32": DRACTypeClassifier = "Dell.RemoteAccess.iDRAC8Monolithic"
case "33": DRACTypeClassifier = "Dell.RemoteAccess.iDRAC8Modular"
case "34": DRACTypeClassifier = "Dell.RemoteAccess.iDRAC8Monolithic"
case "1": DRACTypeClassifier = "Unknown":
case "2": DRACTypeClassifier = "Unknown":
case else: DRACTypeClassifier = "Unknown":
end Select

End Function
'##############################################
'Classify the network devices and the classifier name is the class name
Function DRACClassifier

If InStr(ValueMap.Item("ShortProductName"), "PowerEdge") &gt; 0 Then
DRACClassifier = "Dell.RemoteAccess.CMC"
elseif StrComp(ValueMap.Item("ShortProductName"), "DRAC/MC") = 0 Then
DRACClassifier = "Dell.RemoteAccess.DRACMC"
elseif InStr(ValueMap.Item("ShortProductName"), "DRAC") &gt; 0 Then
DRACClassifier = "Dell.RemoteAccess.RAC"
end if
End Function
'##################################################
'Create Sink object and return discovery data
Function EmptyDiscovery()
Set oInstance = oDiscoveryData.CreateClassInstance("$MPElement[Name='DAD!Dell.RemoteAccess.DiscoverySink']$")
call oInstance.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "Dell RemoteAccess Discovery Sink")
call oInstance.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.DiscoverySink']/Name$", "DONTCARE")
oDiscoveryData.AddInstance oInstance
Call oAPI.Return(oDiscoveryData)
Set oDiscoveryData = Nothing
Set oAPI = Nothing
End Function
'##############################################
Function GetMSName
Dim StrRegKeyCompName, StrRegKeyTCPIP, WSHShell, StrHostname, StrDomainName, StrFQDN
StrRegKeyCompName = "HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\"
StrRegKeyTCPIP = "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\"

Set WSHShell = CreateObject("WScript.Shell")

StrHostname = WSHShell.RegRead (StrRegKeyTCPIP &amp; "Hostname")
StrDomainName = WSHShell.RegRead (StrRegKeyTCPIP &amp; "Domain")
StrFQDN = StrHostName &amp; "." &amp; StrDomainName
GetMSName = StrFQDN
End Function
'##################################################
Function GetRegistryValue (strRegistryKey )
Dim WSHShell, value
On Error Resume Next
Set WSHShell = CreateObject("WScript.Shell")
value = WSHShell.RegRead( strRegistryKey )
If(strcomp(value,"") = 0) Then
value = GetMSName()
end if
set WSHShell = nothing
GetRegistryValue = value
End Function
'##################################################
Function PopulateAttrMap()

AttrMap.Add "SourceId", "SourceId"
AttrMap.Add "ManagedEntityId", "ManagedEntityId"
AttrMap.Add "Loglevel", "Loglevel"
AttrMap.Add "IPAddress", "IPAddress"
AttrMap.Add "UID", "UID"
AttrMap.Add "DeviceKey", "DeviceKey"
AttrMap.Add "SNMPErrorCode", "SNMPErrorCode"
AttrMap.Add "CommunityString", "CommunityString"

'DELL-RAC-MIB
AttrMap.Add ".1.3.6.1.4.1.674.10892.2.1.1.1.0", "ProdName"
AttrMap.Add ".1.3.6.1.4.1.674.10892.2.1.1.2.0", "ShortProductName"
AttrMap.Add ".1.3.6.1.4.1.674.10892.2.1.1.3.0", "Description"
AttrMap.Add ".1.3.6.1.4.1.674.10892.2.1.1.4.0", "Manufacturer"
AttrMap.Add ".1.3.6.1.4.1.674.10892.2.1.1.5.0", "Version"
AttrMap.Add ".1.3.6.1.4.1.674.10892.2.1.1.6.0", "ChassisTag"
AttrMap.Add ".1.3.6.1.4.1.674.10892.2.1.1.7.0", "OOBURL"
AttrMap.Add ".1.3.6.1.4.1.674.10892.2.1.1.10.0", "ChassisName"
AttrMap.Add ".1.3.6.1.4.1.674.10892.2.1.1.11.0", "ServiceTag"
AttrMap.Add ".1.3.6.1.4.1.674.10892.2.1.1.14.0", "ProductType"
AttrMap.Add ".1.3.6.1.4.1.674.10892.2.1.2.1.0", "Firmware"

'iDRAC-MIB
AttrMap.Add ".1.3.6.1.4.1.674.10892.5.1.1.1.0", "ProdName"
AttrMap.Add ".1.3.6.1.4.1.674.10892.5.1.1.2.0", "ShortProductName"
AttrMap.Add ".1.3.6.1.4.1.674.10892.5.1.1.3.0", "Description"
AttrMap.Add ".1.3.6.1.4.1.674.10892.5.1.1.4.0", "Manufacturer"
AttrMap.Add ".1.3.6.1.4.1.674.10892.5.1.1.5.0", "Version"
AttrMap.Add ".1.3.6.1.4.1.674.10892.5.1.1.6.0", "OOBURL"
AttrMap.Add ".1.3.6.1.4.1.674.10892.5.1.1.7.0", "ProductType"
AttrMap.Add ".1.3.6.1.4.1.674.10892.5.1.1.8.0", "Firmware"

AttrMap.Add ".1.3.6.1.4.1.674.10892.5.1.3.1.0", "ServerHostName"
AttrMap.Add ".1.3.6.1.4.1.674.10892.5.1.3.2.0", "ServiceTag"
AttrMap.Add ".1.3.6.1.4.1.674.10892.5.1.3.3.0", "ExpressServiceCode"
AttrMap.Add ".1.3.6.1.4.1.674.10892.5.1.3.4.0", "AssetTag"
AttrMap.Add ".1.3.6.1.4.1.674.10892.5.1.3.7.0", "FormFactor"
AttrMap.Add ".1.3.6.1.4.1.674.10892.5.1.3.8.0", "DataCenterName"
AttrMap.Add ".1.3.6.1.4.1.674.10892.5.1.3.9.0", "AISLE"
AttrMap.Add ".1.3.6.1.4.1.674.10892.5.1.3.10.0", "RACK"
AttrMap.Add ".1.3.6.1.4.1.674.10892.5.1.3.11.0", "SLOT"
AttrMap.Add ".1.3.6.1.4.1.674.10892.5.1.2.1.0", "ChassisTag"

AttrMap.Add ".1.3.6.1.4.1.674.10892.5.1.3.12.0", "SystemModel"
AttrMap.Add ".1.3.6.1.4.1.674.10892.5.1.3.6.0", "OperatingSystemName"
AttrMap.Add ".1.3.6.1.4.1.674.10892.5.1.3.14.0", "OperatingSystemVersion"
AttrMap.Add ".1.3.6.1.4.1.674.10892.5.1.3.15.0", "SystemRoomName"
AttrMap.Add ".1.3.6.1.4.1.674.10892.5.1.3.5.0", "BladeSlotNumber"
'NodeID supported by STOMP
AttrMap.Add ".1.3.6.1.4.1.674.10892.5.1.3.18.0", "NodeID"


End Function
'##############################################
Function GetArguments()
MOMDebugLog 1, "Entered GetArguments"
Dim ArgumentIterator, ArgumentCounter, ArgumentBuffer , ArgumentTemp
ArgumentIterator = 0
ArgumentCounter = 0
ArgumentBuffer = "Not Available"
Dim key, value

Do
ArgumentTemp = oArgs(ArgumentIterator)
if ((StrComp(ArgumentTemp,"#*#") = 0 ) or (StrComp(argumentTemp,"###") = 0 )) Then
if ((ArgumentCounter mod 2) = 0) Then
key = trim(ArgumentBuffer)
else
value = trim(ArgumentBuffer)
AddToValueMap key, value
end if
ArgumentBuffer = ""
ArgumentCounter = ArgumentCounter + 1
elseif (StrComp(ArgumentBuffer,"Not Available") = 0 ) Then
ArgumentBuffer = ArgumentTemp
else
ArgumentBuffer = ArgumentBuffer &amp; " " &amp; ArgumentTemp
end if
ArgumentIterator = ArgumentIterator + 1
Loop while Not(StrComp(argumentTemp,"###") = 0)
PopulateValueMap(AttrMap)

End Function
'##################################
Function InitLookups
Set AttrMap = CreateObject("Scripting.Dictionary")
PopulateAttrMap()
Set ValueMap = CreateObject("Scripting.Dictionary")
End Function
'###########################################
Function AddToValueMap(key, value)
Dim attrName
if(StrComp(Left(key, 3), "1.3") = 0 )Then
'It is an OIDS
key = "." &amp; key
End if
if StrComp(key, "") = 0 OR StrComp(key, "\n") = 0 Then
Exit Function
end if

if AttrMap.Exists(key) Then
attrName = AttrMap.Item(key)
if StrComp(value, "") = 0 Then
value = "Not Available"
end if

if ValueMap.Exists(attrName) Then
if StrComp(value,"") = 0 Then
else
ValueMap.Item(attrName) = value
end if
else
ValueMap.Add attrName, value
end if
else
attrName = AttrMap.Item(key)
end If

End Function
'#####################################################
Function DisplayMap(ByRef map)
Dim i, cnt
cnt = 0
For each i in map.Keys
MOMDebugLog 1, cnt &amp; ":" &amp; i
cnt = cnt + 1
Next
cnt = 0
For each i in map.Items
MOMDebugLog 1, cnt &amp; ":" &amp; i
cnt = cnt + 1
Next
End Function
'#####################################################
Function PopulateValueMap(ByRef map)
Dim value, cnt, key1
cnt = 0
value = "Not Available"

For each key1 in map.Items
If(ValueMap.Exists(key1) = false) Then
ValueMap.Add key1, value
End If
Next
End Function
'##############################################################
Function GetFormFactor(ByVal formfactorVal)
Select Case formfactorVal
case "3": GetFormFactor = "1U Monolithic"
case "4": GetFormFactor = "2U Monolithic"
case "5": GetFormFactor = "4U Monolithic"
case "12": GetFormFactor = "5U Monolithic"
case "6": GetFormFactor = "7U Monolithic"
case "7": GetFormFactor = "Single width, half height Modular"
case "8": GetFormFactor = "Dual width, half height Modular"
case "9": GetFormFactor = "Single width, full height Modular"
case "10": GetFormFactor = "Dual width, full height Modular"
case "11": GetFormFactor = "Single width, quarter height Modular"
case "13": GetFormFactor = "1U, half width Modular"
case "14": GetFormFactor = "1U, quarter width Modular"
case "15": GetFormFactor = "1U, full width Modular"
case "2": GetFormFactor = "Not Available"
case else: GetFormFactor = "Not Available"
End Select
End Function

'##############################################################

'Get the ProductType
Function getProductType(ByVal ProductType)
Select Case ProductType
case "6": getProductType = "DRAC 5"
case "9": getProductType = "iDRAC 6 Modular"
case "10" getProductType = "iDRAC 6 Monolithic"
case "13": getProductType = "iDRAC 6 Monolithic"
case "16": getProductType = "iDRAC 7 Monolithic"
case "17": getProductType = "iDRAC 7 Modular"
case "32": getProductType = "iDRAC 8 Monolithic"
case "33": getProductType = "iDRAC 8 Modular"
case "34": getProductType = "iDRAC 8 Monolithic"
case else: getProductType = "Unknown"
End Select
End Function
'##############################################################

Function PopulateRACAttributes(ByRef oInstance1)

MOMDebugLog 1,"Entered PopulateRACAttributes()"
MOMDebugLog 1,"Add PrincipalName:" &amp; regHostName
call oInstance1.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", regHostName)
MOMDebugLog 1,"Add DisplayName:" &amp; ValueMap.Item("IPAddress")
call oInstance1.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", ValueMap.Item("IPAddress"))

'NodeID/Service Tag as UID
Dim UIDValue, NodeID, ProductType
NodeID = ValueMap.Item("NodeID")
If (StrComp(NodeID, "") = 0) OR (StrComp(NodeID, "Not Available") = 0) OR (StrComp(ValueMap.Item("ServiceTag"), NodeID) = 0) Then
UIDValue = ValueMap.Item("ServiceTag")
Else
UIDValue = NodeID
End If

MOMDebugLog 1,"Add UID:" &amp; UIDValue
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/UID$", UIDValue)
MOMDebugLog 1,"Add DeviceKey:" &amp; ValueMap.Item("IPAddress")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/DeviceKey$", ValueMap.Item("IPAddress"))
MOMDebugLog 1,"Add IPAddress:" &amp; ValueMap.Item("IPAddress")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/IPAddress$", ValueMap.Item("IPAddress"))
MOMDebugLog 1, "add CommunityString:" &amp; ValueMap.Item("CommunityString")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/CommunityString$", ValueMap.Item("CommunityString"))

MOMDebugLog 1,"Add ServiceTag:" &amp; ValueMap.Item("ServiceTag")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/ServiceTag$", ValueMap.Item("ServiceTag"))
MOMDebugLog 1,"Add ProdName:" &amp; ValueMap.Item("ProdName")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/ProdName$", ValueMap.Item("ProdName"))
MOMDebugLog 1,"Add ShortProductName:" &amp; ValueMap.Item("ShortProductName")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/ShortProductName$", ValueMap.Item("ShortProductName"))
MOMDebugLog 1,"Add Description:" &amp; ValueMap.Item("Description")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/Description$", ValueMap.Item("Description"))
MOMDebugLog 1,"Add Manufacturer:" &amp; ValueMap.Item("Manufacturer")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/Manufacturer$", ValueMap.Item("Manufacturer"))
MOMDebugLog 1,"Add Version:" &amp; ValueMap.Item("Version")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/Version$", ValueMap.Item("Version"))
MOMDebugLog 1,"Add OOBURL:" &amp; ValueMap.Item("OOBURL")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/OOBURL$", ValueMap.Item("OOBURL"))
MOMDebugLog 1,"Add Firmware:" &amp; ValueMap.Item("Firmware")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/Firmware$", ValueMap.Item("Firmware"))
ProductType = getProductType(ValueMap.Item("ProductType"))
MOMDebugLog 1,"Add ProductType:" &amp; ProductType
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/ProductType$", ProductType)
AddEnrichedAttributes(oInstance1)

MOMDebugLog 1,"Exiting PopulateRACAttributes()"
End Function
'##############################################################
Function AddEnrichedAttributes(ByRef oInstance1)
MOMDebugLog 1,"Add AssetTag:" &amp; ValueMap.Item("AssetTag")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/AssetTag$", ValueMap.Item("AssetTag"))
MOMDebugLog 1,"Add ExpressServiceCode:" &amp; ValueMap.Item("ExpressServiceCode")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/ExpressServiceCode$", ValueMap.Item("ExpressServiceCode"))

Dim formfactor
formfactor = GetFormFactor(ValueMap.Item("FormFactor"))
MOMDebugLog 1,"Add FormFactor:" &amp; formfactor
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/FormFactor$", formfactor)

MOMDebugLog 1,"Add ServerHostName:" &amp; ValueMap.Item("ServerHostName")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/ServerHostName$", ValueMap.Item("ServerHostName"))
MOMDebugLog 1,"Add DataCenterName:" &amp; ValueMap.Item("DataCenterName")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/DataCenterName$", ValueMap.Item("DataCenterName"))

Dim Location
Location = ""
Location = "AISLE:" &amp; ValueMap.Item("AISLE") &amp; ", RACK:" &amp; ValueMap.Item("RACK") &amp; ", Slot on Rack:" &amp; ValueMap.Item("SLOT")
MOMDebugLog 1,"Aisle:" &amp; ValueMap.Item("AISLE") &amp; "RACK:" &amp; ValueMap.Item("RACK") &amp; "Slot:" &amp; ValueMap.Item("SLOT")
MOMDebugLog 1,"Add Location:" &amp; Location
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/Location$", Location)

End Function
'##############################################################

Function CreateDRAC5()
MOMDebugLog 1,"Creating CreateDRAC5"
Set oInstance1 = oDiscoveryData.CreateClassInstance("$MPElement[Name='DAD!Dell.RemoteAccess.DRAC5']$")
PopulateRACAttributes(oInstance1)

MOMDebugLog 1,"Add ChassisName:" &amp; ValueMap.Item("ChassisName")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/ChassisName$", "Not Applicable")
MOMDebugLog 1,"Add ChassisTag:" &amp; ValueMap.Item("ChassisTag")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/ChassisTag$", "Not Applicable")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/SystemModel$", "Not Applicable")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/OperatingSystemName$", "Not Applicable")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/OperatingSystemVersion$", "Not Applicable")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/SystemRoomName$", "Not Applicable")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/BladeSlotNumber$", "Not Applicable")

Set oInstance2 = oDiscoveryData.CreateClassInstance("$MPElement[Name='Dell.DRAC5.NetworkDevice']$")
call oInstance2.AddProperty("$MPElement[Name='NetworkDevice!Microsoft.SystemCenter.NetworkDevice']/IPAddress$", ValueMap.Item("IPAddress"))
oDiscoveryData.AddInstance oInstance1
oDiscoveryData.AddInstance oInstance2

Set oRelationship = oDiscoveryData.CreateRelationshipInstance("$MPElement[Name='DellRemoteAccessDRAC5.Contains.DellDRAC5NetworkDevice']$")
oRelationship.Source = oInstance1
oRelationship.Target = oInstance2
oDiscoveryData.AddInstance oRelationship
End Function
'#############################################################
'2-iDRAC6Modular
'##############################################################
Function CreateiDRAC6Modular()
MOMDebugLog 1,"Creating CreateiDRAC6Modular"
Set oInstance1 = oDiscoveryData.CreateClassInstance("$MPElement[Name='DAD!Dell.RemoteAccess.iDRAC6Modular']$")
PopulateRACAttributes(oInstance1)
MOMDebugLog 1,"Add ChassisName:" &amp; ValueMap.Item("ChassisName")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/ChassisName$", ValueMap.Item("ChassisName"))
MOMDebugLog 1,"Add ChassisTag:" &amp; ValueMap.Item("ChassisTag")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/ChassisTag$", ValueMap.Item("ChassisTag"))
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/SystemModel$", "Not Applicable")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/OperatingSystemName$", "Not Applicable")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/OperatingSystemVersion$", "Not Applicable")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/SystemRoomName$", "Not Applicable")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/BladeSlotNumber$", "Not Applicable")

Set oInstance2 = oDiscoveryData.CreateClassInstance("$MPElement[Name='Dell.iDRAC6Modular.NetworkDevice']$")
call oInstance2.AddProperty("$MPElement[Name='NetworkDevice!Microsoft.SystemCenter.NetworkDevice']/IPAddress$", ValueMap.Item("IPAddress"))
oDiscoveryData.AddInstance oInstance1
oDiscoveryData.AddInstance oInstance2

Set oRelationship = oDiscoveryData.CreateRelationshipInstance("$MPElement[Name='DellRemoteAccessiDRAC6Modular.Contains.DelliDRAC6ModularNetworkDevice']$")
oRelationship.Source = oInstance1
oRelationship.Target = oInstance2
oDiscoveryData.AddInstance oRelationship
End Function
'#######################################################
'3-iDRAC6Monolithic
'#############################################################
Function CreateiDRAC6Monolithic()
MOMDebugLog 1,"Creating CreateiDRAC6Monolithic"
Set oInstance1 = oDiscoveryData.CreateClassInstance("$MPElement[Name='DAD!Dell.RemoteAccess.iDRAC6Monolithic']$")
PopulateRACAttributes(oInstance1)
MOMDebugLog 1,"Add ChassisName:" &amp; ValueMap.Item("ChassisName")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/ChassisName$", "Not Applicable")
MOMDebugLog 1,"Add ChassisTag:" &amp; ValueMap.Item("ChassisTag")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/ChassisTag$", "Not Applicable")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/SystemModel$", "Not Applicable")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/OperatingSystemName$", "Not Applicable")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/OperatingSystemVersion$", "Not Applicable")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/SystemRoomName$", "Not Applicable")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/BladeSlotNumber$", "Not Applicable")

Set oInstance2 = oDiscoveryData.CreateClassInstance("$MPElement[Name='Dell.iDRAC6Monolithic.NetworkDevice']$")
call oInstance2.AddProperty("$MPElement[Name='NetworkDevice!Microsoft.SystemCenter.NetworkDevice']/IPAddress$", ValueMap.Item("IPAddress"))
oDiscoveryData.AddInstance oInstance1
oDiscoveryData.AddInstance oInstance2

Set oRelationship = oDiscoveryData.CreateRelationshipInstance("$MPElement[Name='DellRemoteAccessiDRAC6Monolithic.Contains.DelliDRAC6MonolithicNetworkDevice']$")
oRelationship.Source = oInstance1
oRelationship.Target = oInstance2
oDiscoveryData.AddInstance oRelationship
End Function
'#######################################################
'4-iDRAC7Monolithic
'#############################################################
Function CreateiDRAC7Monolithic()
MOMDebugLog 1,"Creating CreateiDRAC7Monolithic"
Set oInstance1 = oDiscoveryData.CreateClassInstance("$MPElement[Name='DAD!Dell.RemoteAccess.iDRAC7Monolithic']$")
PopulateRACAttributes(oInstance1)
MOMDebugLog 1,"Add ChassisName:" &amp; ValueMap.Item("ChassisName")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/ChassisName$", "Not Applicable")
MOMDebugLog 1,"Add ChassisTag:" &amp; ValueMap.Item("ChassisTag")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/ChassisTag$", "Not Applicable")
MOMDebugLog 1,"Add System Model:" &amp; ValueMap.Item("SystemModel")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/SystemModel$", ValueMap.Item("SystemModel"))
MOMDebugLog 1,"Add Operating System Name:" &amp; ValueMap.Item("OperatingSystemName")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/OperatingSystemName$", ValueMap.Item("OperatingSystemName"))
MOMDebugLog 1,"Add Operating System Version:" &amp; ValueMap.Item("OperatingSystemVersion")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/OperatingSystemVersion$", ValueMap.Item("OperatingSystemVersion"))
MOMDebugLog 1,"Add System Room Name:" &amp; ValueMap.Item("SystemRoomName")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/SystemRoomName$", ValueMap.Item("SystemRoomName"))
MOMDebugLog 1,"Add Blade Slot Number:" &amp; ValueMap.Item("BladeSlotNumber")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/BladeSlotNumber$", ValueMap.Item("BladeSlotNumber"))

Set oInstance2 = oDiscoveryData.CreateClassInstance("$MPElement[Name='Dell.iDRAC7Monolithic.NetworkDevice']$")
call oInstance2.AddProperty("$MPElement[Name='NetworkDevice!Microsoft.SystemCenter.NetworkDevice']/IPAddress$", ValueMap.Item("IPAddress"))
oDiscoveryData.AddInstance oInstance1
oDiscoveryData.AddInstance oInstance2

Set oRelationship = oDiscoveryData.CreateRelationshipInstance("$MPElement[Name='DellRemoteAccessiDRAC7Monolithic.Contains.DelliDRAC7MonolithicNetworkDevice']$")
oRelationship.Source = oInstance1
oRelationship.Target = oInstance2
oDiscoveryData.AddInstance oRelationship
End Function
'#######################################################
'5-iDRAC7Modular
'#############################################################
Function CreateiDRAC7Modular()
MOMDebugLog 1,"Creating CreateiDRAC7Modular"
Set oInstance1 = oDiscoveryData.CreateClassInstance("$MPElement[Name='DAD!Dell.RemoteAccess.iDRAC7Modular']$")
PopulateRACAttributes(oInstance1)
MOMDebugLog 1,"Add ChassisName:" &amp; ValueMap.Item("ChassisName")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/ChassisName$", ValueMap.Item("ChassisName"))
MOMDebugLog 1,"Add ChassisTag:" &amp; ValueMap.Item("ChassisTag")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/ChassisTag$", ValueMap.Item("ChassisTag"))
MOMDebugLog 1,"Add System Model:" &amp; ValueMap.Item("SystemModel")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/SystemModel$", ValueMap.Item("SystemModel"))
MOMDebugLog 1,"Add Operating System Name:" &amp; ValueMap.Item("OperatingSystemName")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/OperatingSystemName$", ValueMap.Item("OperatingSystemName"))
MOMDebugLog 1,"Add Operating System Version:" &amp; ValueMap.Item("OperatingSystemVersion")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/OperatingSystemVersion$", ValueMap.Item("OperatingSystemVersion"))
MOMDebugLog 1,"Add System Room Name:" &amp; ValueMap.Item("SystemRoomName")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/SystemRoomName$", ValueMap.Item("SystemRoomName"))
MOMDebugLog 1,"Add Blade Slot Number:" &amp; ValueMap.Item("BladeSlotNumber")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/BladeSlotNumber$", ValueMap.Item("BladeSlotNumber"))

Set oInstance2 = oDiscoveryData.CreateClassInstance("$MPElement[Name='Dell.iDRAC7Modular.NetworkDevice']$")
call oInstance2.AddProperty("$MPElement[Name='NetworkDevice!Microsoft.SystemCenter.NetworkDevice']/IPAddress$", ValueMap.Item("IPAddress"))
oDiscoveryData.AddInstance oInstance1
oDiscoveryData.AddInstance oInstance2

Set oRelationship = oDiscoveryData.CreateRelationshipInstance("$MPElement[Name='DellRemoteAccessiDRAC7Modular.Contains.DelliDRAC7ModularNetworkDevice']$")
oRelationship.Source = oInstance1
oRelationship.Target = oInstance2
oDiscoveryData.AddInstance oRelationship
End Function

'#######################################################
'6-iDRAC8Monolithic
'#############################################################
Function CreateiDRAC8Monolithic()
MOMDebugLog 1,"Creating CreateiDRAC8Monolithic"
Set oInstance1 = oDiscoveryData.CreateClassInstance("$MPElement[Name='DAD!Dell.RemoteAccess.iDRAC8Monolithic']$")
PopulateRACAttributes(oInstance1)
MOMDebugLog 1,"Add ChassisName:" &amp; ValueMap.Item("ChassisName")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/ChassisName$", "Not Applicable")
MOMDebugLog 1,"Add ChassisTag:" &amp; ValueMap.Item("ChassisTag")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/ChassisTag$", "Not Applicable")
MOMDebugLog 1,"Add System Model:" &amp; ValueMap.Item("SystemModel")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/SystemModel$", ValueMap.Item("SystemModel"))
MOMDebugLog 1,"Add Operating System Name:" &amp; ValueMap.Item("OperatingSystemName")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/OperatingSystemName$", ValueMap.Item("OperatingSystemName"))
MOMDebugLog 1,"Add Operating System Version:" &amp; ValueMap.Item("OperatingSystemVersion")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/OperatingSystemVersion$", ValueMap.Item("OperatingSystemVersion"))
MOMDebugLog 1,"Add System Room Name:" &amp; ValueMap.Item("SystemRoomName")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/SystemRoomName$", ValueMap.Item("SystemRoomName"))
MOMDebugLog 1,"Add Blade Slot Number:" &amp; ValueMap.Item("BladeSlotNumber")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/BladeSlotNumber$", ValueMap.Item("BladeSlotNumber"))

Set oInstance2 = oDiscoveryData.CreateClassInstance("$MPElement[Name='Dell.iDRAC8Monolithic.NetworkDevice']$")
call oInstance2.AddProperty("$MPElement[Name='NetworkDevice!Microsoft.SystemCenter.NetworkDevice']/IPAddress$", ValueMap.Item("IPAddress"))
oDiscoveryData.AddInstance oInstance1
oDiscoveryData.AddInstance oInstance2

Set oRelationship = oDiscoveryData.CreateRelationshipInstance("$MPElement[Name='DellRemoteAccessiDRAC8Monolithic.Contains.DelliDRAC8MonolithicNetworkDevice']$")
oRelationship.Source = oInstance1
oRelationship.Target = oInstance2
oDiscoveryData.AddInstance oRelationship
End Function
'#######################################################
'7-iDRAC8Modular
'#############################################################
Function CreateiDRAC8Modular()
MOMDebugLog 1,"Creating CreateiDRAC8Modular"
Set oInstance1 = oDiscoveryData.CreateClassInstance("$MPElement[Name='DAD!Dell.RemoteAccess.iDRAC8Modular']$")
PopulateRACAttributes(oInstance1)
MOMDebugLog 1,"Add ChassisName:" &amp; ValueMap.Item("ChassisName")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/ChassisName$", ValueMap.Item("ChassisName"))
MOMDebugLog 1,"Add ChassisTag:" &amp; ValueMap.Item("ChassisTag")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/ChassisTag$", ValueMap.Item("ChassisTag"))
MOMDebugLog 1,"Add System Model:" &amp; ValueMap.Item("SystemModel")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/SystemModel$", ValueMap.Item("SystemModel"))
MOMDebugLog 1,"Add Operating System Name:" &amp; ValueMap.Item("OperatingSystemName")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/OperatingSystemName$", ValueMap.Item("OperatingSystemName"))
MOMDebugLog 1,"Add Operating System Version:" &amp; ValueMap.Item("OperatingSystemVersion")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/OperatingSystemVersion$", ValueMap.Item("OperatingSystemVersion"))
MOMDebugLog 1,"Add System Room Name:" &amp; ValueMap.Item("SystemRoomName")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/SystemRoomName$", ValueMap.Item("SystemRoomName"))
MOMDebugLog 1,"Add Blade Slot Number:" &amp; ValueMap.Item("BladeSlotNumber")
call oInstance1.AddProperty("$MPElement[Name='DAD!Dell.RemoteAccess.RAC']/BladeSlotNumber$", ValueMap.Item("BladeSlotNumber"))

Set oInstance2 = oDiscoveryData.CreateClassInstance("$MPElement[Name='Dell.iDRAC8Modular.NetworkDevice']$")
call oInstance2.AddProperty("$MPElement[Name='NetworkDevice!Microsoft.SystemCenter.NetworkDevice']/IPAddress$", ValueMap.Item("IPAddress"))
oDiscoveryData.AddInstance oInstance1
oDiscoveryData.AddInstance oInstance2

Set oRelationship = oDiscoveryData.CreateRelationshipInstance("$MPElement[Name='DellRemoteAccessiDRAC8Modular.Contains.DelliDRAC8ModularNetworkDevice']$")
oRelationship.Source = oInstance1
oRelationship.Target = oInstance2
oDiscoveryData.AddInstance oRelationship
End Function

</Script></ScriptBody>
<TimeoutSeconds>300</TimeoutSeconds>
</ProbeAction>
</MemberModules>
<Composition>
<Node ID="P2">
<Node ID="P1">
<Node ID="DS"/>
</Node>
</Node>
</Composition>
</Composite>
</ModuleImplementation>
<OutputType>System!System.Discovery.Data</OutputType>
</DataSourceModuleType>