﻿<?xml version="1.0" encoding="utf-8"?><ManagementPack ContentReadable="true" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <Manifest>
    <Identity>
      <ID>Dell.Connections.001</ID>
      <Version>3.1.0.118</Version>
    </Identity>
    <Name>Dell.Connections.001</Name>
    <References>
      <Reference Alias="AppLog">
        <ID>System.ApplicationLog.Library</ID>
        <Version>6.0.6278.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
      <Reference Alias="NetworkDevice">
        <ID>Microsoft.SystemCenter.NetworkDevice.Library</ID>
        <Version>6.0.6278.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
      <Reference Alias="SCDW">
        <ID>Microsoft.SystemCenter.DataWarehouse.Library</ID>
        <Version>6.0.6278.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
      <Reference Alias="Snmp">
        <ID>System.Snmp.Library</ID>
        <Version>6.0.6278.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
      <Reference Alias="Windows">
        <ID>Microsoft.Windows.Library</ID>
        <Version>6.0.6278.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
      <Reference Alias="System">
        <ID>System.Library</ID>
        <Version>6.0.6278.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
      <Reference Alias="SystemCenter">
        <ID>Microsoft.SystemCenter.Library</ID>
        <Version>6.0.6278.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
      <Reference Alias="SystemHealth">
        <ID>System.Health.Library</ID>
        <Version>6.0.6278.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
    </References>
  </Manifest>
  <TypeDefinitions>
    <EntityTypes>
      <ClassTypes>
        <ClassType ID="Dell.Connections.DellHWGroup" Accessibility="Public" Abstract="false" Base="System!System.Group" Hosted="false" Singleton="true" />
        <ClassType ID="Dell.Connections.DellServerGroup" Accessibility="Public" Abstract="false" Base="System!System.Group" Hosted="false" Singleton="true" />
        <ClassType ID="Dell.Connections.DellPrinterGroup" Accessibility="Public" Abstract="false" Base="System!System.Group" Hosted="false" Singleton="true" />
        <ClassType ID="Dell.Connections.DellUnknownGroup" Accessibility="Public" Abstract="false" Base="System!System.Group" Hosted="false" Singleton="true" />
        <ClassType ID="Dell.Connections.DellMonolithicServerGroup" Accessibility="Public" Abstract="false" Base="System!System.Group" Hosted="false" Singleton="true" />
        <ClassType ID="Dell.Connections.DellModularSystemGroup" Accessibility="Public" Abstract="false" Base="System!System.Group" Hosted="false" Singleton="true" />
        <ClassType ID="Dell.Connections.DellSystem" Accessibility="Public" Abstract="false" Base="Windows!Microsoft.Windows.LogicalDevice" Hosted="true" Singleton="false" />
        <ClassType ID="Dell.Connections.DellServer" Accessibility="Public" Abstract="false" Base="Dell.Connections.DellSystem" Hosted="true" Singleton="false">
          <Property ID="IPAddress" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="OMSAURL" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="AssetTag" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="ServiceTag" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="OperatingSystem" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="OperatingSystemVersion" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="Model" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="BiosVersion" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="OMSAVersion" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="IPMIVersion" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="TOECapable" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="TOEEnable" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
        </ClassType>
        <ClassType ID="Dell.Connections.DellMonolithicServer" Accessibility="Public" Abstract="false" Base="Dell.Connections.DellServer" Hosted="true" Singleton="false" />
        <ClassType ID="Dell.Connections.DellModularBlade" Accessibility="Public" Abstract="false" Base="Dell.Connections.DellServer" Hosted="true" Singleton="false" />
        <ClassType ID="Dell.Connections.DellChassis" Accessibility="Public" Abstract="false" Base="System!System.LogicalEntity" Hosted="true" Singleton="false" />
        <ClassType ID="Dell.Connections.DellPrinter" Accessibility="Public" Abstract="false" Base="NetworkDevice!Microsoft.SystemCenter.NetworkDevice" Hosted="false" Singleton="false">
          <Property ID="InputName" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="0" />
          <Property ID="OutputName" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="0" />
          <Property ID="CoverStatus" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="0" />
          <Property ID="Status" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="0" />
          <Property ID="InputVendorName" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="0" />
          <Property ID="InputModel" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="0" />
          <Property ID="InputDescription" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="0" />
          <Property ID="InputMaxCapacity" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="0" />
          <Property ID="OutputVendorName" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="0" />
          <Property ID="OutputModel" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="0" />
          <Property ID="OutputDescription" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="0" />
          <Property ID="OutputMaxCapacity" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="0" />
          <Property ID="CoverDescription" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="0" />
          <Property ID="SupplyType" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="0" />
          <Property ID="SupplyDescription" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="0" />
          <Property ID="SupplyLevel" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="0" />
          <Property ID="SupplyMaxLevel" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="0" />
        </ClassType>
        <ClassType ID="Dell.Connections.DellDRAC" Accessibility="Public" Abstract="false" Base="System!System.PhysicalEntity" Hosted="true" Singleton="false">
          <Property ID="DracURL" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
        </ClassType>
        <ClassType ID="Dell.Connections.ServerHWComponents" Accessibility="Public" Abstract="false" Base="System!System.LogicalEntity" Hosted="true" Singleton="false" />
        <ClassType ID="Dell.Connections.ServerServices" Accessibility="Public" Abstract="false" Base="System!System.LogicalEntity" Hosted="true" Singleton="false" />
        <ClassType ID="Dell.Connections.ServerHWComponentsSensors" Accessibility="Public" Abstract="false" Base="System!System.LogicalEntity" Hosted="true" Singleton="false" />
        <ClassType ID="Dell.Connections.ServerNumericSensor" Accessibility="Public" Abstract="true" Base="System!System.PhysicalEntity" Hosted="false" Singleton="false">
          <Property ID="DeviceID" Type="string" Key="true" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="CurrentReading" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="BaseUnits" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="SensorType" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="LowerThresholdCritical" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="LowerThresholdNonCritical" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="UpperThresholdCritical" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="UpperThresholdNonCritical" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
        </ClassType>
        <ClassType ID="Dell.Connections.ServerDiscreteSensor" Accessibility="Public" Abstract="true" Base="System!System.PhysicalEntity" Hosted="false" Singleton="false">
          <Property ID="DeviceID" Type="string" Key="true" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="CurrentReading" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="OtherSensorTypeDescription" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
        </ClassType>
        <ClassType ID="Dell.Connections.ServerSensorTemperature" Accessibility="Public" Abstract="false" Base="System!System.PhysicalEntity" Hosted="true" Singleton="false" />
        <ClassType ID="Dell.Connections.ServerSensorTemperatureUnit" Accessibility="Public" Abstract="false" Base="Dell.Connections.ServerNumericSensor" Hosted="true" Singleton="false" />
        <ClassType ID="Dell.Connections.ServerSensorVoltage" Accessibility="Public" Abstract="false" Base="System!System.PhysicalEntity" Hosted="true" Singleton="false" />
        <ClassType ID="Dell.Connections.ServerSensorVoltageNumericUnit" Accessibility="Public" Abstract="false" Base="Dell.Connections.ServerNumericSensor" Hosted="true" Singleton="false" />
        <ClassType ID="Dell.Connections.ServerSensorVoltageDiscreteUnit" Accessibility="Public" Abstract="false" Base="Dell.Connections.ServerDiscreteSensor" Hosted="true" Singleton="false" />
        <ClassType ID="Dell.Connections.ServerSensorCurrents" Accessibility="Public" Abstract="false" Base="System!System.PhysicalEntity" Hosted="true" Singleton="false" />
        <ClassType ID="Dell.Connections.ServerSensorCurrentsNumericUnit" Accessibility="Public" Abstract="false" Base="Dell.Connections.ServerNumericSensor" Hosted="true" Singleton="false" />
        <ClassType ID="Dell.Connections.ServerSensorBatteries" Accessibility="Public" Abstract="false" Base="System!System.PhysicalEntity" Hosted="true" Singleton="false" />
        <ClassType ID="Dell.Connections.ServerSensorBatteriesDiscreteUnit" Accessibility="Public" Abstract="false" Base="Dell.Connections.ServerDiscreteSensor" Hosted="true" Singleton="false" />
        <ClassType ID="Dell.Connections.ServerFans" Accessibility="Public" Abstract="false" Base="System!System.PhysicalEntity" Hosted="true" Singleton="false" />
        <ClassType ID="Dell.Connections.ServerFansUnit" Accessibility="Public" Abstract="false" Base="System!System.PhysicalEntity" Hosted="true" Singleton="false">
          <Property ID="DeviceID" Type="string" Key="true" CaseSensitive="false" Length="256" MinLength="1" />
        </ClassType>
        <ClassType ID="Dell.Connections.ServerMemory" Accessibility="Public" Abstract="false" Base="System!System.PhysicalEntity" Hosted="true" Singleton="false" />
        <ClassType ID="Dell.Connections.ServerMemoryUnit" Accessibility="Public" Abstract="false" Base="System!System.PhysicalEntity" Hosted="true" Singleton="false">
          <Property ID="Tag" Type="string" Key="true" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="MemoryType" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="Capacity" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
        </ClassType>
        <ClassType ID="Dell.Connections.ServerProcessors" Accessibility="Public" Abstract="false" Base="System!System.PhysicalEntity" Hosted="true" Singleton="false" />
        <ClassType ID="Dell.Connections.ServerProcessorsUnit" Accessibility="Public" Abstract="false" Base="System!System.PhysicalEntity" Hosted="true" Singleton="false">
          <Property ID="DeviceID" Type="string" Key="true" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="CurrentClockSpeed" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
        </ClassType>
        <ClassType ID="Dell.Connections.ServerPowerSupplies" Accessibility="Public" Abstract="false" Base="System!System.PhysicalEntity" Hosted="true" Singleton="false" />
        <ClassType ID="Dell.Connections.ServerPowerSuppliesUnit" Accessibility="Public" Abstract="false" Base="System!System.PhysicalEntity" Hosted="true" Singleton="false">
          <Property ID="DeviceID" Type="string" Key="true" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="TotalOutputPower" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="IsSwitchingSupply" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
        </ClassType>
        <ClassType ID="Dell.Connections.ServerIntrusion" Accessibility="Public" Abstract="false" Base="System!System.PhysicalEntity" Hosted="true" Singleton="false" />
        <ClassType ID="Dell.Connections.ServerServices.DSMEventManager" Accessibility="Public" Abstract="false" Base="System!System.LogicalEntity" Hosted="true" Singleton="false">
          <Property ID="Description" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="StartMode" Type="string" Key="false" CaseSensitive="false" Length="32" MinLength="1" />
        </ClassType>
        <ClassType ID="Dell.Connections.ServerServices.DSMDataManager" Accessibility="Public" Abstract="false" Base="System!System.LogicalEntity" Hosted="true" Singleton="false">
          <Property ID="Description" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="StartMode" Type="string" Key="false" CaseSensitive="false" Length="32" MinLength="1" />
        </ClassType>
        <ClassType ID="Dell.Connections.ServerServices.DSMConnService" Accessibility="Public" Abstract="false" Base="System!System.LogicalEntity" Hosted="true" Singleton="false">
          <Property ID="Description" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="StartMode" Type="string" Key="false" CaseSensitive="false" Length="32" MinLength="1" />
        </ClassType>
        <ClassType ID="Dell.Connections.ServerServices.DSMSharedServices" Accessibility="Public" Abstract="false" Base="System!System.LogicalEntity" Hosted="true" Singleton="false">
          <Property ID="Description" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="StartMode" Type="string" Key="false" CaseSensitive="false" Length="32" MinLength="1" />
        </ClassType>
        <ClassType ID="Dell.Connections.ServerBMC" Accessibility="Public" Abstract="false" Base="System!System.PhysicalEntity" Hosted="true" Singleton="false">
          <Property ID="BMCIPAddress" Type="string" Key="false" CaseSensitive="false" Length="32" MinLength="1" />
        </ClassType>
        <ClassType ID="Dell.Connections.DellStorage" Accessibility="Public" Abstract="false" Base="System!System.PhysicalEntity" Hosted="true" Singleton="false" />
        <ClassType ID="Dell.Connections.DellStorageController" Accessibility="Public" Abstract="false" Base="System!System.PhysicalEntity" Hosted="true" Singleton="false">
          <Property ID="DeviceID" Type="string" Key="true" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="Status" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="SlotID" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="State" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="FirmwareVer" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="MinReqFirmwareVer" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="DriverVer" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="MinReqDriverVer" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="NumOfConnectors" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="RebuildRate" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="BGIRate" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="CheckConsistencyRate" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="ReConstructRate" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="AlarmState" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="ClusterMode" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="SCSIInitiatorID" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="CacheMemorySize" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="PatrolReadMode" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="PatrolReadState" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="PatrolReadRate" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="PatrolReadIterations" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
        </ClassType>
        <ClassType ID="Dell.Connections.ControllerBattery" Accessibility="Public" Abstract="false" Base="System!System.PhysicalEntity" Hosted="true" Singleton="false">
          <Property ID="ID" Type="string" Key="true" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="Status" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="State" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="RechargeCount" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="MaxRechargeCount" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="PredictedCapacityStatus" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="LearnState" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="NextLearnTime" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="MaxLearnDelay" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
        </ClassType>
        <ClassType ID="Dell.Connections.ControllerVirtualDisk" Accessibility="Public" Abstract="false" Base="System!System.PhysicalEntity" Hosted="true" Singleton="false">
          <Property ID="ID" Type="string" Key="true" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="Status" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="State" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="Progress" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="Layout" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="Size" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="DeviceName" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="Type" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="ReadPolicy" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="WritePolicy" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="CachePolicy" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="StripeElementSize" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
        </ClassType>
        <ClassType ID="Dell.Connections.ControllerConnector" Accessibility="Public" Abstract="false" Base="System!System.PhysicalEntity" Hosted="true" Singleton="false">
          <Property ID="ID" Type="string" Key="true" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="Status" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="State" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="ConnectorType" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="Termination" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="SCSIRate" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
        </ClassType>
        <ClassType ID="Dell.Connections.ControllerEnclosure" Accessibility="Public" Abstract="false" Base="System!System.PhysicalEntity" Hosted="true" Singleton="false">
          <Property ID="ID" Type="string" Key="true" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="Status" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="State" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="Connector" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="TargetID" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="Configuration" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="FirmwareVersion" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="ServiceTag" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="AssetTag" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="AssetName" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="BackplanePartNum" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="SplitbusPartNum" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="EnclosurePartNum" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="SASAddress" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="EnclosureAlarm" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
        </ClassType>
        <ClassType ID="Dell.Connections.EnclosurePhysicalDisk" Accessibility="Public" Abstract="false" Base="System!System.PhysicalEntity" Hosted="true" Singleton="false">
          <Property ID="ID" Type="string" Key="true" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="Status" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="State" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="FailurePredicted" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="Progress" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="Type" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="Capacity" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="UsedRaidDiskSpace" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="AvailableRaidDiskSpace" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="HotSpare" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="VendorID" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="ProductID" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="Revision" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="SerialNumber" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="NegotiatedSpeed" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="CapableSpeed" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="ManufactureDay" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="ManufactureWeek" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="ManufactureYear" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="SASAddress" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
        </ClassType>
        <ClassType ID="Dell.Connections.EnclosureTemperature" Accessibility="Public" Abstract="false" Base="System!System.PhysicalEntity" Hosted="true" Singleton="false">
          <Property ID="ID" Type="string" Key="true" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="Status" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="State" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="Reading" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="MinWarningThreshold" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="MaxWarningThreshold" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="MinFailureThreshold" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="MaxFailureThreshold" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
        </ClassType>
        <ClassType ID="Dell.Connections.EnclosureFan" Accessibility="Public" Abstract="false" Base="System!System.PhysicalEntity" Hosted="true" Singleton="false">
          <Property ID="ID" Type="string" Key="true" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="Status" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="State" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="PartNumber" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="Speed" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
        </ClassType>
        <ClassType ID="Dell.Connections.EnclosurePowerSupply" Accessibility="Public" Abstract="false" Base="System!System.PhysicalEntity" Hosted="true" Singleton="false">
          <Property ID="ID" Type="string" Key="true" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="Status" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="State" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="PartNumber" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
        </ClassType>
        <ClassType ID="Dell.Connections.EnclosureEMM" Accessibility="Public" Abstract="false" Base="System!System.PhysicalEntity" Hosted="true" Singleton="false">
          <Property ID="ID" Type="string" Key="true" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="Status" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="State" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="PartNumber" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="FirmwareVersion" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="SCSIRate" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="Type" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
        </ClassType>
        <ClassType ID="Dell.Connections.ConnectorPhysicalDisk" Accessibility="Public" Abstract="false" Base="System!System.PhysicalEntity" Hosted="true" Singleton="false">
          <Property ID="ID" Type="string" Key="true" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="Status" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="State" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="FailurePredicted" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="Progress" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="Type" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="Capacity" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="UsedRaidDiskSpace" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="AvailableRaidDiskSpace" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="HotSpare" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="VendorID" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="ProductID" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="Revision" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="SerialNumber" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="NegotiatedSpeed" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="CapableSpeed" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="ManufactureDay" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="ManufactureWeek" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="ManufactureYear" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="SASAddress" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
        </ClassType>
        <ClassType ID="Dell.Connections.ChassisFans" Accessibility="Public" Abstract="false" Base="System!System.PhysicalEntity" Hosted="true" Singleton="false" />
        <ClassType ID="Dell.Connections.ChassisFansUnit" Accessibility="Public" Abstract="false" Base="System!System.PhysicalEntity" Hosted="true" Singleton="false">
          <Property ID="DeviceID" Type="string" Key="true" CaseSensitive="false" Length="256" MinLength="1" />
        </ClassType>
        <ClassType ID="Dell.Connections.ChassisPowerSupplies" Accessibility="Public" Abstract="false" Base="System!System.PhysicalEntity" Hosted="true" Singleton="false" />
        <ClassType ID="Dell.Connections.ChassisPowerSuppliesUnit" Accessibility="Public" Abstract="false" Base="System!System.PhysicalEntity" Hosted="true" Singleton="false">
          <Property ID="DeviceID" Type="string" Key="true" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="TotalOutputPower" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="IsSwitchingSupply" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
        </ClassType>
        <ClassType ID="Dell.Connections.DellUnknown" Accessibility="Public" Abstract="false" Base="Dell.Connections.DellSystem" Hosted="true" Singleton="false" />
        <ClassType ID="Dell.Connections.OOB_DRAC_Group" Accessibility="Public" Abstract="false" Base="System!System.Group" Hosted="false" Singleton="true" />
        <ClassType ID="Dell.Connections.DRAC_5" Accessibility="Public" Abstract="false" Base="NetworkDevice!Microsoft.SystemCenter.NetworkDevice" Hosted="false" Singleton="false">
          <Property ID="System_UpTime" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="0" />
          <Property ID="ProdName" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="0" />
          <Property ID="ProdShortName" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="0" />
          <Property ID="ProdDesc" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="0" />
          <Property ID="ProdManf" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="0" />
          <Property ID="ProdVer" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="0" />
          <Property ID="ChassisTag" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="0" />
          <Property ID="ProdUrl" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="0" />
          <Property ID="SysServiceTag" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="0" />
          <Property ID="FirmwareVer" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="0" />
        </ClassType>
        <ClassType ID="Dell.Connections.DRACMC" Accessibility="Public" Abstract="false" Base="NetworkDevice!Microsoft.SystemCenter.NetworkDevice" Hosted="false" Singleton="false">
          <Property ID="System_UpTime" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="0" />
          <Property ID="ProdName" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="0" />
          <Property ID="ProdShortName" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="0" />
          <Property ID="ProdDesc" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="0" />
          <Property ID="ProdManf" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="0" />
          <Property ID="ProdVer" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="0" />
          <Property ID="ChassisTag" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="0" />
          <Property ID="ProdUrl" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="0" />
          <Property ID="SysServiceTag" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="0" />
          <Property ID="FirmwareVer" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="0" />
        </ClassType>
        <ClassType ID="Dell.Connections.OOB_CMC_Group" Accessibility="Public" Abstract="false" Base="System!System.Group" Hosted="false" Singleton="true" />
        <ClassType ID="Dell.Connections.CMC" Accessibility="Public" Abstract="false" Base="NetworkDevice!Microsoft.SystemCenter.NetworkDevice" Hosted="false" Singleton="false">
          <Property ID="Name" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="0" />
          <Property ID="ShortProductName" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="0" />
          <Property ID="Description" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="0" />
          <Property ID="Manufacturer" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="0" />
          <Property ID="Version" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="0" />
          <Property ID="ServiceTag" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="0" />
          <Property ID="OOBURL" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="0" />
          <Property ID="ChassisName" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="0" />
          <Property ID="Firmware" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="0" />
        </ClassType>
        <ClassType ID="Dell.Connections.DellServer.BIOS" Accessibility="Public" Abstract="false" Base="System!System.LogicalEntity" Hosted="true" Singleton="false">
          <Property ID="Name" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="Manufacturer" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="Version" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="SerialNumber" Type="string" Key="true" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="SMBIOSBIOSVersion" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="SMBIOSMajorVersion" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="SMBIOSMinorVersion" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="SMBIOSPresent" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="PrimaryBIOS" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="Status" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
          <Property ID="CurrentLanguage" Type="string" Key="false" CaseSensitive="false" Length="256" MinLength="1" />
        </ClassType>
      </ClassTypes>
      <RelationshipTypes>
        <RelationshipType ID="DellHWGroup.Contains.DellServerGroup" Accessibility="Internal" Abstract="false" Base="System!System.Containment">
          <Source>Dell.Connections.DellHWGroup</Source>
          <Target>Dell.Connections.DellServerGroup</Target>
        </RelationshipType>
        <RelationshipType ID="DellHWGroup.Contains.DellPrinterGroup" Accessibility="Internal" Abstract="false" Base="System!System.Containment">
          <Source>Dell.Connections.DellHWGroup</Source>
          <Target>Dell.Connections.DellPrinterGroup</Target>
        </RelationshipType>
        <RelationshipType ID="DellServer.Hosts.DellDRAC" Accessibility="Internal" Abstract="false" Base="System!System.Hosting">
          <Source>Dell.Connections.DellServer</Source>
          <Target>Dell.Connections.DellDRAC</Target>
        </RelationshipType>
        <RelationshipType ID="DellHWGroup.Contains.DellUnknownGroup" Accessibility="Internal" Abstract="false" Base="System!System.Containment">
          <Source>Dell.Connections.DellHWGroup</Source>
          <Target>Dell.Connections.DellUnknownGroup</Target>
        </RelationshipType>
        <RelationshipType ID="DellServerGroup.Contains.DellMonolithicServerGroup" Accessibility="Internal" Abstract="false" Base="System!System.Containment">
          <Source>Dell.Connections.DellServerGroup</Source>
          <Target>Dell.Connections.DellMonolithicServerGroup</Target>
        </RelationshipType>
        <RelationshipType ID="DellServerGroup.Contains.DellModularSystemGroup" Accessibility="Internal" Abstract="false" Base="System!System.Containment">
          <Source>Dell.Connections.DellServerGroup</Source>
          <Target>Dell.Connections.DellModularSystemGroup</Target>
        </RelationshipType>
        <RelationshipType ID="DellMonolithicServerGroup.Contains.DellMonolithicServer" Accessibility="Public" Abstract="false" Base="System!System.Containment">
          <Source>Dell.Connections.DellMonolithicServerGroup</Source>
          <Target>Dell.Connections.DellMonolithicServer</Target>
        </RelationshipType>
        <RelationshipType ID="DellModularSystemGroup.Contains.DellModularBlade" Accessibility="Public" Abstract="false" Base="System!System.Containment">
          <Source>Dell.Connections.DellModularSystemGroup</Source>
          <Target>Dell.Connections.DellModularBlade</Target>
        </RelationshipType>
        <RelationshipType ID="DellModularBlade.Hosts.DellChassis" Accessibility="Public" Abstract="false" Base="System!System.Hosting">
          <Source>Dell.Connections.DellModularBlade</Source>
          <Target>Dell.Connections.DellChassis</Target>
        </RelationshipType>
        <RelationshipType ID="DellChassis.Hosts.ChassisFans" Accessibility="Public" Abstract="false" Base="System!System.Hosting">
          <Source>Dell.Connections.DellChassis</Source>
          <Target>Dell.Connections.ChassisFans</Target>
        </RelationshipType>
        <RelationshipType ID="ChassisFans.Hosts.ChassisFansUnit" Accessibility="Public" Abstract="false" Base="System!System.Hosting">
          <Source>Dell.Connections.ChassisFans</Source>
          <Target>Dell.Connections.ChassisFansUnit</Target>
        </RelationshipType>
        <RelationshipType ID="DellChassis.Hosts.ChassisPowerSupplies" Accessibility="Public" Abstract="false" Base="System!System.Hosting">
          <Source>Dell.Connections.DellChassis</Source>
          <Target>Dell.Connections.ChassisPowerSupplies</Target>
        </RelationshipType>
        <RelationshipType ID="ChassisPowerSupplies.Hosts.ChassisPowerSuppliesUnit" Accessibility="Public" Abstract="false" Base="System!System.Hosting">
          <Source>Dell.Connections.ChassisPowerSupplies</Source>
          <Target>Dell.Connections.ChassisPowerSuppliesUnit</Target>
        </RelationshipType>
        <RelationshipType ID="DellPrinterGroup.Contains.DellPrinter" Accessibility="Public" Abstract="false" Base="System!System.Containment">
          <Source>Dell.Connections.DellPrinterGroup</Source>
          <Target>Dell.Connections.DellPrinter</Target>
        </RelationshipType>
        <RelationshipType ID="DellUnknownGroup.Contains.DellUnknown" Accessibility="Public" Abstract="false" Base="System!System.Containment">
          <Source>Dell.Connections.DellUnknownGroup</Source>
          <Target>Dell.Connections.DellUnknown</Target>
        </RelationshipType>
        <RelationshipType ID="DellServer.Hosts.ServerHWComponents" Accessibility="Internal" Abstract="false" Base="System!System.Hosting">
          <Source>Dell.Connections.DellServer</Source>
          <Target>Dell.Connections.ServerHWComponents</Target>
        </RelationshipType>
        <RelationshipType ID="DellServer.Hosts.ServerServices" Accessibility="Internal" Abstract="false" Base="System!System.Hosting">
          <Source>Dell.Connections.DellServer</Source>
          <Target>Dell.Connections.ServerServices</Target>
        </RelationshipType>
        <RelationshipType ID="DellServer.Hosts.ServerBMC" Accessibility="Internal" Abstract="false" Base="System!System.Hosting">
          <Source>Dell.Connections.DellServer</Source>
          <Target>Dell.Connections.ServerBMC</Target>
        </RelationshipType>
        <RelationshipType ID="ServerHWComponents.Hosts.Sensors" Accessibility="Internal" Abstract="false" Base="System!System.Hosting">
          <Source>Dell.Connections.ServerHWComponents</Source>
          <Target>Dell.Connections.ServerHWComponentsSensors</Target>
        </RelationshipType>
        <RelationshipType ID="ServerHWComponentsSensors.Hosts.Temperature" Accessibility="Internal" Abstract="false" Base="System!System.Hosting">
          <Source>Dell.Connections.ServerHWComponentsSensors</Source>
          <Target>Dell.Connections.ServerSensorTemperature</Target>
        </RelationshipType>
        <RelationshipType ID="ServerTemperature.Hosts.TemperatureUnit" Accessibility="Internal" Abstract="false" Base="System!System.Hosting">
          <Source>Dell.Connections.ServerSensorTemperature</Source>
          <Target>Dell.Connections.ServerSensorTemperatureUnit</Target>
        </RelationshipType>
        <RelationshipType ID="ServerHWComponentsSensors.Hosts.Voltage" Accessibility="Internal" Abstract="false" Base="System!System.Hosting">
          <Source>Dell.Connections.ServerHWComponentsSensors</Source>
          <Target>Dell.Connections.ServerSensorVoltage</Target>
        </RelationshipType>
        <RelationshipType ID="ServerVoltage.Hosts.VoltageNumericUnit" Accessibility="Internal" Abstract="false" Base="System!System.Hosting">
          <Source>Dell.Connections.ServerSensorVoltage</Source>
          <Target>Dell.Connections.ServerSensorVoltageNumericUnit</Target>
        </RelationshipType>
        <RelationshipType ID="ServerVoltage.Hosts.VoltageDiscreteUnit" Accessibility="Internal" Abstract="false" Base="System!System.Hosting">
          <Source>Dell.Connections.ServerSensorVoltage</Source>
          <Target>Dell.Connections.ServerSensorVoltageDiscreteUnit</Target>
        </RelationshipType>
        <RelationshipType ID="ServerHWComponentsSensors.Hosts.Currents" Accessibility="Internal" Abstract="false" Base="System!System.Hosting">
          <Source>Dell.Connections.ServerHWComponentsSensors</Source>
          <Target>Dell.Connections.ServerSensorCurrents</Target>
        </RelationshipType>
        <RelationshipType ID="ServerCurrents.Hosts.CurrentsNumericUnit" Accessibility="Internal" Abstract="false" Base="System!System.Hosting">
          <Source>Dell.Connections.ServerSensorCurrents</Source>
          <Target>Dell.Connections.ServerSensorCurrentsNumericUnit</Target>
        </RelationshipType>
        <RelationshipType ID="ServerHWComponentsSensors.Hosts.Batteries" Accessibility="Internal" Abstract="false" Base="System!System.Hosting">
          <Source>Dell.Connections.ServerHWComponentsSensors</Source>
          <Target>Dell.Connections.ServerSensorBatteries</Target>
        </RelationshipType>
        <RelationshipType ID="ServerBatteries.Hosts.BatteriesDiscreteUnit" Accessibility="Internal" Abstract="false" Base="System!System.Hosting">
          <Source>Dell.Connections.ServerSensorBatteries</Source>
          <Target>Dell.Connections.ServerSensorBatteriesDiscreteUnit</Target>
        </RelationshipType>
        <RelationshipType ID="ServerHWComponents.Hosts.Fans" Accessibility="Internal" Abstract="false" Base="System!System.Hosting">
          <Source>Dell.Connections.ServerHWComponents</Source>
          <Target>Dell.Connections.ServerFans</Target>
        </RelationshipType>
        <RelationshipType ID="ServerFans.Hosts.FansUnit" Accessibility="Internal" Abstract="false" Base="System!System.Hosting">
          <Source>Dell.Connections.ServerFans</Source>
          <Target>Dell.Connections.ServerFansUnit</Target>
        </RelationshipType>
        <RelationshipType ID="ServerHWComponents.Hosts.PowerSupplies" Accessibility="Internal" Abstract="false" Base="System!System.Hosting">
          <Source>Dell.Connections.ServerHWComponents</Source>
          <Target>Dell.Connections.ServerPowerSupplies</Target>
        </RelationshipType>
        <RelationshipType ID="ServerPowerSupplies.Hosts.PowerSuppliesUnit" Accessibility="Internal" Abstract="false" Base="System!System.Hosting">
          <Source>Dell.Connections.ServerPowerSupplies</Source>
          <Target>Dell.Connections.ServerPowerSuppliesUnit</Target>
        </RelationshipType>
        <RelationshipType ID="ServerHWComponents.Hosts.Memory" Accessibility="Internal" Abstract="false" Base="System!System.Hosting">
          <Source>Dell.Connections.ServerHWComponents</Source>
          <Target>Dell.Connections.ServerMemory</Target>
        </RelationshipType>
        <RelationshipType ID="ServerMemory.Hosts.MemoryUnit" Accessibility="Internal" Abstract="false" Base="System!System.Hosting">
          <Source>Dell.Connections.ServerMemory</Source>
          <Target>Dell.Connections.ServerMemoryUnit</Target>
        </RelationshipType>
        <RelationshipType ID="ServerHWComponents.Hosts.Processors" Accessibility="Internal" Abstract="false" Base="System!System.Hosting">
          <Source>Dell.Connections.ServerHWComponents</Source>
          <Target>Dell.Connections.ServerProcessors</Target>
        </RelationshipType>
        <RelationshipType ID="ServerProcessors.Hosts.ProcessorsUnit" Accessibility="Internal" Abstract="false" Base="System!System.Hosting">
          <Source>Dell.Connections.ServerProcessors</Source>
          <Target>Dell.Connections.ServerProcessorsUnit</Target>
        </RelationshipType>
        <RelationshipType ID="ServerHWComponents.Hosts.Intrusion" Accessibility="Internal" Abstract="false" Base="System!System.Hosting">
          <Source>Dell.Connections.ServerHWComponents</Source>
          <Target>Dell.Connections.ServerIntrusion</Target>
        </RelationshipType>
        <RelationshipType ID="ServerServices.Hosts.DSMEventManager" Accessibility="Internal" Abstract="false" Base="System!System.Hosting">
          <Source>Dell.Connections.ServerServices</Source>
          <Target>Dell.Connections.ServerServices.DSMEventManager</Target>
        </RelationshipType>
        <RelationshipType ID="ServerServices.Hosts.DSMSharedServices" Accessibility="Public" Abstract="false" Base="System!System.Hosting">
          <Source>Dell.Connections.ServerServices</Source>
          <Target>Dell.Connections.ServerServices.DSMSharedServices</Target>
        </RelationshipType>
        <RelationshipType ID="ServerServices.Hosts.DSMConnService" Accessibility="Public" Abstract="false" Base="System!System.Hosting">
          <Source>Dell.Connections.ServerServices</Source>
          <Target>Dell.Connections.ServerServices.DSMConnService</Target>
        </RelationshipType>
        <RelationshipType ID="ServerServices.Hosts.DSMDataManager" Accessibility="Public" Abstract="false" Base="System!System.Hosting">
          <Source>Dell.Connections.ServerServices</Source>
          <Target>Dell.Connections.ServerServices.DSMDataManager</Target>
        </RelationshipType>
        <RelationshipType ID="DellServer.Hosts.DellStorage" Accessibility="Internal" Abstract="false" Base="System!System.Hosting">
          <Source>Dell.Connections.DellServer</Source>
          <Target>Dell.Connections.DellStorage</Target>
        </RelationshipType>
        <RelationshipType ID="DellStorage.Hosts.DellStorageController" Accessibility="Internal" Abstract="false" Base="System!System.Hosting">
          <Source>Dell.Connections.DellStorage</Source>
          <Target>Dell.Connections.DellStorageController</Target>
        </RelationshipType>
        <RelationshipType ID="DellStorageController.Hosts.ControllerBattery" Accessibility="Internal" Abstract="false" Base="System!System.Hosting">
          <Source>Dell.Connections.DellStorageController</Source>
          <Target>Dell.Connections.ControllerBattery</Target>
        </RelationshipType>
        <RelationshipType ID="DellStorageController.Hosts.ControllerVirtualDisk" Accessibility="Internal" Abstract="false" Base="System!System.Hosting">
          <Source>Dell.Connections.DellStorageController</Source>
          <Target>Dell.Connections.ControllerVirtualDisk</Target>
        </RelationshipType>
        <RelationshipType ID="DellStorageController.Hosts.ControllerConnector" Accessibility="Internal" Abstract="false" Base="System!System.Hosting">
          <Source>Dell.Connections.DellStorageController</Source>
          <Target>Dell.Connections.ControllerConnector</Target>
        </RelationshipType>
        <RelationshipType ID="ControllerConnector.Hosts.ControllerEnclosure" Accessibility="Internal" Abstract="false" Base="System!System.Hosting">
          <Source>Dell.Connections.ControllerConnector</Source>
          <Target>Dell.Connections.ControllerEnclosure</Target>
        </RelationshipType>
        <RelationshipType ID="ControllerConnector.Hosts.ConnectorPhysicalDisk" Accessibility="Internal" Abstract="false" Base="System!System.Hosting">
          <Source>Dell.Connections.ControllerConnector</Source>
          <Target>Dell.Connections.ConnectorPhysicalDisk</Target>
        </RelationshipType>
        <RelationshipType ID="ControllerEnclosure.Hosts.EnclosurePhysicalDisk" Accessibility="Internal" Abstract="false" Base="System!System.Hosting">
          <Source>Dell.Connections.ControllerEnclosure</Source>
          <Target>Dell.Connections.EnclosurePhysicalDisk</Target>
        </RelationshipType>
        <RelationshipType ID="ControllerEnclosure.Hosts.EnclosureTemperature" Accessibility="Internal" Abstract="false" Base="System!System.Hosting">
          <Source>Dell.Connections.ControllerEnclosure</Source>
          <Target>Dell.Connections.EnclosureTemperature</Target>
        </RelationshipType>
        <RelationshipType ID="ControllerEnclosure.Hosts.EnclosureFan" Accessibility="Internal" Abstract="false" Base="System!System.Hosting">
          <Source>Dell.Connections.ControllerEnclosure</Source>
          <Target>Dell.Connections.EnclosureFan</Target>
        </RelationshipType>
        <RelationshipType ID="ControllerEnclosure.Hosts.EnclosurePowerSupply" Accessibility="Internal" Abstract="false" Base="System!System.Hosting">
          <Source>Dell.Connections.ControllerEnclosure</Source>
          <Target>Dell.Connections.EnclosurePowerSupply</Target>
        </RelationshipType>
        <RelationshipType ID="ControllerEnclosure.Hosts.EnclosureEMM" Accessibility="Internal" Abstract="false" Base="System!System.Hosting">
          <Source>Dell.Connections.ControllerEnclosure</Source>
          <Target>Dell.Connections.EnclosureEMM</Target>
        </RelationshipType>
        <RelationshipType ID="DellServerGroup.Contains.DellOOB_DRAC_Group" Accessibility="Internal" Abstract="false" Base="System!System.Containment">
          <Source>Dell.Connections.DellServerGroup</Source>
          <Target>Dell.Connections.OOB_DRAC_Group</Target>
        </RelationshipType>
        <RelationshipType ID="DellServerGroup.Contains.DellOOB_CMC_Group" Accessibility="Internal" Abstract="false" Base="System!System.Containment">
          <Source>Dell.Connections.DellServerGroup</Source>
          <Target>Dell.Connections.OOB_CMC_Group</Target>
        </RelationshipType>
        <RelationshipType ID="OOB_DRAC_Group.Contains.DRAC_5" Accessibility="Public" Abstract="false" Base="System!System.Containment">
          <Source>Dell.Connections.OOB_DRAC_Group</Source>
          <Target>Dell.Connections.DRAC_5</Target>
        </RelationshipType>
        <RelationshipType ID="OOB_DRAC_Group.Contains.DRACMC" Accessibility="Public" Abstract="false" Base="System!System.Containment">
          <Source>Dell.Connections.OOB_DRAC_Group</Source>
          <Target>Dell.Connections.DRACMC</Target>
        </RelationshipType>
        <RelationshipType ID="DellServer.Hosts.DellServerBIOS" Accessibility="Internal" Abstract="false" Base="System!System.Hosting">
          <Source>Dell.Connections.DellServer</Source>
          <Target>Dell.Connections.DellServer.BIOS</Target>
        </RelationshipType>
        <RelationshipType ID="OOB_CMC_Group.Contains.CMC" Accessibility="Public" Abstract="false" Base="System!System.Containment">
          <Source>Dell.Connections.OOB_CMC_Group</Source>
          <Target>Dell.Connections.CMC</Target>
        </RelationshipType>
      </RelationshipTypes>
    </EntityTypes>
    <ModuleTypes>
      <DataSourceModuleType ID="Dell.Connections.HWComponentDiscovery" Accessibility="Internal" Batching="false">
        <Configuration>
          <xsd:element name="IntervalSeconds" type="xsd:integer" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
          <xsd:element name="Computer" type="xsd:string" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
        </Configuration>
        <OverrideableParameters>
          <OverrideableParameter ID="IntervalSeconds" Selector="$Config/IntervalSeconds$" ParameterType="int" />
        </OverrideableParameters>
        <ModuleImplementation Isolation="Any">
          <Composite>
            <MemberModules>
              <DataSource ID="DS" TypeID="Windows!Microsoft.Windows.TimedScript.DiscoveryProvider">
                <IntervalSeconds>$Config/IntervalSeconds$</IntervalSeconds>
                <SyncTime />
                <ScriptName>DellServerHWComponentDiscovery.vbs</ScriptName>
                <Arguments>$MPElement$ $Target/Id$ $Config/Computer$</Arguments>
                <ScriptBody>
'**********************************************************************************
' Script Name - Dell Server HW Component Discovery
' Author: Vignesh Pandian, Muralidhar L
'
' Description:
' Discover all hardware components for a Dell server with instrumentation using CIM	
' 
' (c) Copyright Dell Inc. 2007 - All rights reserved           
'**********************************************************************************

Option Explicit
On Error Resume Next
Dim oArgs
Set oArgs = WScript.Arguments
if oArgs.Count &lt; 3 Then
   Wscript.Quit -1
End If

Dim SourceID, ManagedEntityId, TargetComputer
Dim FanFlag, MemFlag, PSFlag, ProcFlag, BaseboardType, TempFlag, VoltageFlag, CurrentFlag, BatteryFlag, IntrusionFlag

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

FanFlag = 0
MemFlag = 0
PSFlag = 0
ProcFlag = 0
TempFlag = 0
VoltageFlag = 0
CurrentFlag = 0
BatteryFlag = 0
IntrusionFlag = 0

Dim oAPI, oDiscoveryData, oInst, strComputer, objDellConnection, LogMessage

Set oAPI = CreateObject("MOM.ScriptAPI")
set oDiscoveryData = oAPI.CreateDiscoveryData(0, SourceId, ManagedEntityId)
strComputer = TargetComputer
	
set objDellConnection = GetObject("winmgmts:" &amp; "{impersonationLevel=impersonate}!\\" &amp; strComputer &amp; "\root\cimv2\Dell")
If Err.Number &lt;&gt; 0 Then
	LogMessage =  "WMI Cimv2Dell Error Number : " &amp; Err.Number &amp; ". Description :" &amp; Err.Description
	Err.Clear
Else
	If IsEmpty(objDellConnection) Then
		LogMessage =  "Unable to open WMI Namespace root-cimv2-dell.  Check to see if the WMI service is enabled and running, and Install/Re-Install ServerAdministrator to ensure this WMI namespace exists. " &amp; Err
	Else
		TempDiscover()
		VoltageDiscover()
		CurrentDiscover()
		BatteryDiscover()		
		DiscoverProc()
		DiscoverMem()
		DiscoverIntrusion()
		
		GetBaseBoardType()
		If (BaseboardType = "10") Then
			DiscoverFans()
			DiscoverPS()
		End If
	End If
End If

set oInst = oDiscoveryData.CreateClassInstance("$MPElement[Name='Dell.Connections.ServerHWComponents']$")
call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", TargetComputer)
call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.LogicalDevice']/DeviceID$", TargetComputer)
call oInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "Hardware Components")	
call oDiscoveryData.AddInstance(oInst)

If TempFlag = 1 Then
	set oInst = oDiscoveryData.CreateClassInstance("$MPElement[Name='Dell.Connections.ServerSensorTemperature']$")
	call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", TargetComputer)
	call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.LogicalDevice']/DeviceID$", TargetComputer)
	call oInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "Temperature")	
	call oDiscoveryData.AddInstance(oInst)		
End If
	
set oInst = oDiscoveryData.CreateClassInstance("$MPElement[Name='Dell.Connections.ServerHWComponentsSensors']$")
call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", TargetComputer)
call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.LogicalDevice']/DeviceID$", TargetComputer)
call oInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "Sensors")	
call oDiscoveryData.AddInstance(oInst)
	
If VoltageFlag = 1 Then
	set oInst = oDiscoveryData.CreateClassInstance("$MPElement[Name='Dell.Connections.ServerSensorVoltage']$")
	call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", TargetComputer)
	call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.LogicalDevice']/DeviceID$", TargetComputer)
	call oInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "Voltage")	
	call oDiscoveryData.AddInstance(oInst)
End If
	
If CurrentFlag = 1 Then
	set oInst = oDiscoveryData.CreateClassInstance("$MPElement[Name='Dell.Connections.ServerSensorCurrents']$")
	call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", TargetComputer)
	call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.LogicalDevice']/DeviceID$", TargetComputer)
	call oInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "Currents")	
	call oDiscoveryData.AddInstance(oInst)
End If
	
If BatteryFlag = 1 Then
	set oInst = oDiscoveryData.CreateClassInstance("$MPElement[Name='Dell.Connections.ServerSensorBatteries']$")
	call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", TargetComputer)
	call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.LogicalDevice']/DeviceID$", TargetComputer)
	call oInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "Batteries")	
	call oDiscoveryData.AddInstance(oInst)
End If

If FanFlag = 1 Then
	set oInst = oDiscoveryData.CreateClassInstance("$MPElement[Name='Dell.Connections.ServerFans']$")
	call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", TargetComputer)
	call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.LogicalDevice']/DeviceID$", TargetComputer)
	call oInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "Fans")	
	call oDiscoveryData.AddInstance(oInst)
End If
	
If PSFlag = 1 Then
	set oInst = oDiscoveryData.CreateClassInstance("$MPElement[Name='Dell.Connections.ServerPowerSupplies']$")
	call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", TargetComputer)
	call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.LogicalDevice']/DeviceID$", TargetComputer)
	call oInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "Power Supplies")	
	call oDiscoveryData.AddInstance(oInst)
End If
	
If ProcFlag = 1 Then
	set oInst = oDiscoveryData.CreateClassInstance("$MPElement[Name='Dell.Connections.ServerProcessors']$")
	call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", TargetComputer)
	call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.LogicalDevice']/DeviceID$", TargetComputer)
	call oInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "Processors")	
	call oDiscoveryData.AddInstance(oInst)
End If
	
If MemFlag = 1 Then
	set oInst = oDiscoveryData.CreateClassInstance("$MPElement[Name='Dell.Connections.ServerMemory']$")
	call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", TargetComputer)
	call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.LogicalDevice']/DeviceID$", TargetComputer)
	call oInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "Memory")	
	call oDiscoveryData.AddInstance(oInst)
End If

If IntrusionFlag = 1 Then
	set oInst = oDiscoveryData.CreateClassInstance("$MPElement[Name='Dell.Connections.ServerIntrusion']$")
	call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", TargetComputer)
	call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.LogicalDevice']/DeviceID$", TargetComputer)
	call oInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "Intrusion")	
	call oDiscoveryData.AddInstance(oInst)
End If

' Submit the data
Call oAPI.Return(oDiscoveryData) 

Set oDiscoveryData = Nothing
Set oAPI = Nothing
objDellConnection = Nothing

Function BatteryDiscover()
	On Error Resume next
	Dim sQuery, colItems, objItemSensor
	
	sQuery = "Select * from CIM_DiscreteSensor WHERE SensorType = '13'"
	
	Set colItems = objDellConnection.ExecQuery(sQuery)
	If Err.Number &lt;&gt; 0 Then
		LogMessage =  sQuery &amp; " Error Number:" &amp; Err.Number &amp; "Description:" &amp; Err.Description
		If Err.Number = -2147023169 Then
			LogMessage =   "RPC Failure occurred for namespace root-cimv2-dell"
		End If
		Err.Clear
	End If
	
	If colItems is Nothing Then
		LogMessage =  "Unable to retrieve object" &amp; sQuery
	Else
		For Each objItemSensor in colItems
			If Err.Number &lt;&gt; 0 Then
				If Err.Number = -2147023169 Then
					LogMessage =  "RPC Failure occurred for cimv2\dell info : " &amp; Err.Number
				Else
					LogMessage =  "Object RetrievalLoop Error Number:" &amp; Err.Number &amp; "Description:" &amp; Err.Description
				End If
				Err.Clear
			ElseIf Not objItemSensor is Nothing Then
				Set oInst = oDiscoveryData.CreateClassInstance("$MPElement[Name='Dell.Connections.ServerSensorBatteriesDiscreteUnit']$")
				call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", TargetComputer)
				call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.LogicalDevice']/DeviceID$", TargetComputer)
				call oInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", objItemSensor.Name)
				call oInst.AddProperty("$MPElement[Name='Dell.Connections.ServerDiscreteSensor']/DeviceID$", objItemSensor.DeviceID)
				call oInst.AddProperty("$MPElement[Name='Dell.Connections.ServerDiscreteSensor']/CurrentReading$", objItemSensor.CurrentReading)
				call oInst.AddProperty("$MPElement[Name='Dell.Connections.ServerDiscreteSensor']/OtherSensorTypeDescription$", objItemSensor.OtherSensorTypeDescription)
				call oDiscoveryData.AddInstance(oInst)

				BatteryFlag = 1
			End If
		Next
	End If 'colItems is nothing
	
	set colItems = Nothing
	On Error Goto 0
End Function

Function CurrentDiscover()
	On Error Resume next
	Dim sQuery, colItems, objItemSensor
	
	sQuery = "Select * from CIM_CurrentSensor"
	
	Set colItems = objDellConnection.ExecQuery(sQuery)
	If Err.Number &lt;&gt; 0 Then
		LogMessage =  sQuery &amp; " Error Number:" &amp; Err.Number &amp; "Description:" &amp; Err.Description
		If Err.Number = -2147023169 Then
			LogMessage =   "RPC Failure occurred for namespace root-cimv2-dell"
		End If
		Err.Clear
	End If
	If colItems is Nothing Then
		LogMessage =  "Unable to retrieve object" &amp; sQuery
	Else
		For Each objItemSensor in colItems
			If Err.Number &lt;&gt; 0 Then
				If Err.Number = -2147023169 Then
					LogMessage =  "RPC Failure occurred for cimv2\dell info : " &amp; Err.Number
				Else
					LogMessage =  "Object RetrievalLoop Error Number:" &amp; Err.Number &amp; "Description:" &amp; Err.Description
				End If
				Err.Clear
			ElseIf Not objItemSensor is Nothing Then
				Set oInst = oDiscoveryData.CreateClassInstance("$MPElement[Name='Dell.Connections.ServerSensorCurrentsNumericUnit']$")
				call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", TargetComputer)
				call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.LogicalDevice']/DeviceID$", TargetComputer)
				call oInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", objItemSensor.Name)
				call oInst.AddProperty("$MPElement[Name='Dell.Connections.ServerNumericSensor']/DeviceID$", objItemSensor.DeviceID)
				call oInst.AddProperty("$MPElement[Name='Dell.Connections.ServerNumericSensor']/CurrentReading$", objItemSensor.CurrentReading)
				call oInst.AddProperty("$MPElement[Name='Dell.Connections.ServerNumericSensor']/LowerThresholdCritical$", objItemSensor.LowerThresholdCritical)
				call oInst.AddProperty("$MPElement[Name='Dell.Connections.ServerNumericSensor']/LowerThresholdNonCritical$", objItemSensor.LowerThresholdNonCritical)
				call oInst.AddProperty("$MPElement[Name='Dell.Connections.ServerNumericSensor']/UpperThresholdCritical$", objItemSensor.UpperThresholdCritical)
				call oInst.AddProperty("$MPElement[Name='Dell.Connections.ServerNumericSensor']/UpperThresholdNonCritical$", objItemSensor.UpperThresholdNonCritical)
				call oDiscoveryData.AddInstance(oInst)
						
				CurrentFlag = 1
			End If
		Next
	End If 'colItems is nothing
	
	set colItems = Nothing	
	On Error Goto 0
End Function

Function TempDiscover()
	On Error Resume next
	Dim sQuery, colItems, objItemSensor
	Dim CurrentReading, LTCritical, LTNonCritical, UTCritical, UTNonCritical
	
	sQuery = "Select * from CIM_TemperatureSensor"
		
	Set colItems = objDellConnection.ExecQuery(sQuery)
	If Err.Number &lt;&gt; 0 Then
		LogMessage =  sQuery &amp; " Error Number:" &amp; Err.Number &amp; "Description:" &amp; Err.Description
		If Err.Number = -2147023169 Then
			LogMessage =   "RPC Failure occurred for namespace root-cimv2-dell"
		End If
		Err.Clear
	End If
	If colItems is Nothing Then
		LogMessage =  "Unable to retrieve object" &amp; sQuery
	Else
		For Each objItemSensor in colItems
			If Err.Number &lt;&gt; 0 Then
				If Err.Number = -2147023169 Then
					LogMessage =  "RPC Failure occurred for cimv2\dell info : " &amp; Err.Number
				Else
					LogMessage =  "Object RetrievalLoop Error Number:" &amp; Err.Number &amp; "Description:" &amp; Err.Description
				End If
				Err.Clear
			ElseIf Not objItemSensor is Nothing Then
				CurrentReading = objItemSensor.CurrentReading
				LTCritical = objItemSensor.LowerThresholdCritical
				LTNonCritical = objItemSensor.LowerThresholdNonCritical
				UTCritical = objItemSensor.UpperThresholdCritical
				UTNonCritical = objItemSensor.UpperThresholdNonCritical
				
				If Instr(CurrentReading, "-") Then
					CurrentReading = "N/A"
				Else
					CurrentReading = CurrentReading/10 &amp; " C"
				End If
				
				If Instr(LTCritical, "-") Then
					LTCritical = "N/A"
				Else
					LTCritical = LTCritical/10 &amp; " C"
				End If
				
				If Instr(LTNonCritical, "-") Then
					LTNonCritical = "N/A"
				Else
					LTNonCritical = LTNonCritical/10 &amp; " C"
				End If
				
				If Instr(UTCritical, "-") Then
					UTCritical = "N/A"
				Else
					UTCritical = UTCritical/10 &amp; " C"
				End If
				
				If Instr(UTNonCritical, "-") Then
					UTNonCritical = "N/A"
				Else
					UTNonCritical = UTNonCritical/10 &amp; " C"
				End If
				
				Set oInst= oDiscoveryData.CreateClassInstance("$MPElement[Name='Dell.Connections.ServerSensorTemperatureUnit']$")
				call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", TargetComputer)
				call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.LogicalDevice']/DeviceID$", TargetComputer)
				call oInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", objItemSensor.Name)
				call oInst.AddProperty("$MPElement[Name='Dell.Connections.ServerNumericSensor']/DeviceID$", objItemSensor.DeviceID)
				call oInst.AddProperty("$MPElement[Name='Dell.Connections.ServerNumericSensor']/CurrentReading$", CurrentReading)
				call oInst.AddProperty("$MPElement[Name='Dell.Connections.ServerNumericSensor']/LowerThresholdCritical$", LTCritical)
				call oInst.AddProperty("$MPElement[Name='Dell.Connections.ServerNumericSensor']/LowerThresholdNonCritical$", LTNonCritical)
				call oInst.AddProperty("$MPElement[Name='Dell.Connections.ServerNumericSensor']/UpperThresholdCritical$", UTCritical)
				call oInst.AddProperty("$MPElement[Name='Dell.Connections.ServerNumericSensor']/UpperThresholdNonCritical$", UTNonCritical)
				call oDiscoveryData.AddInstance(oInst)
				TempFlag = 1
			End If
		Next
	End If 'colItems is nothing
	
	set colItems = Nothing	
	On Error Goto 0
End Function

Function VoltageDiscover()
	On Error Resume next
	Dim sQuery, sQuery1, colItems, colItems1, objItemSensor, objItemSensor1
	Dim CurrentReading, LTCritical, LTNonCritical, UTCritical, UTNonCritical
	
	sQuery = "Select * from CIM_VoltageSensor"
	sQuery1 = "Select * from CIM_DiscreteSensor WHERE SensorType = '3'"
			
	Set colItems = objDellConnection.ExecQuery(sQuery)
	If Err.Number &lt;&gt; 0 Then
		LogMessage =  sQuery &amp; " Error Number:" &amp; Err.Number &amp; "Description:" &amp; Err.Description
		If Err.Number = -2147023169 Then
			LogMessage =   "RPC Failure occurred for namespace root-cimv2-dell"
		End If
		Err.Clear
	End If
	
	Set colItems1 = objDellConnection.ExecQuery(sQuery1)
	If Err.Number &lt;&gt; 0 Then
		LogMessage =  sQuery &amp; " Error Number:" &amp; Err.Number &amp; "Description:" &amp; Err.Description
		If Err.Number = -2147023169 Then
			LogMessage =   "RPC Failure occurred for namespace root-cimv2-dell"
		End If
		Err.Clear
	End If
			
	If colItems is Nothing Then
		LogMessage =  "Unable to retrieve object" &amp; sQuery
	Else
		For Each objItemSensor in colItems
			If Err.Number &lt;&gt; 0 Then
				If Err.Number = -2147023169 Then
					LogMessage =  "RPC Failure occurred for cimv2\dell info : " &amp; Err.Number
				Else
					LogMessage =  "Object RetrievalLoop Error Number:" &amp; Err.Number &amp; "Description:" &amp; Err.Description
				End If
				Err.Clear
			ElseIf Not objItemSensor is Nothing Then
				CurrentReading = objItemSensor.CurrentReading
				
				If Instr(CurrentReading, "-") Then
					CurrentReading = "N/A"
				Else
					CurrentReading = CurrentReading/1000 &amp; " V"
				End If 
				
				LTCritical = objItemSensor.LowerThresholdCritical
				
				If Instr(LTCritical, "-") Then
					LTCritical = "N/A"
				Else
					LTCritical = LTCritical/1000 &amp; " V"
				End If 
				
				LTNonCritical = objItemSensor.LowerThresholdNonCritical
				
				If Instr(LTNonCritical, "-") Then
					LTNonCritical = "N/A"
				Else
					LTNonCritical = LTNonCritical/1000 &amp; " V"
				End If 
				
				UTCritical = objItemSensor.UpperThresholdCritical
				
				If Instr(UTCritical, "-") Then
					UTCritical = "N/A"
				Else
					UTCritical = UTCritical/1000 &amp; " V"
				End If 
				
				UTNonCritical = objItemSensor.UpperThresholdNonCritical
				
				If Instr(UTNonCritical, "-") Then
					UTNonCritical = "N/A"
				Else
					UTNonCritical = UTNonCritical/1000 &amp; " V"
				End If 
				
				Set oInst = oDiscoveryData.CreateClassInstance("$MPElement[Name='Dell.Connections.ServerSensorVoltageNumericUnit']$")
				call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", TargetComputer)
				call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.LogicalDevice']/DeviceID$", TargetComputer)
				call oInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", objItemSensor.Name)
				call oInst.AddProperty("$MPElement[Name='Dell.Connections.ServerNumericSensor']/DeviceID$", objItemSensor.DeviceID)
				call oInst.AddProperty("$MPElement[Name='Dell.Connections.ServerNumericSensor']/CurrentReading$", CurrentReading)
				call oInst.AddProperty("$MPElement[Name='Dell.Connections.ServerNumericSensor']/LowerThresholdCritical$", LTCritical)
				call oInst.AddProperty("$MPElement[Name='Dell.Connections.ServerNumericSensor']/LowerThresholdNonCritical$", LTNonCritical)
				call oInst.AddProperty("$MPElement[Name='Dell.Connections.ServerNumericSensor']/UpperThresholdCritical$", UTCritical)
				call oInst.AddProperty("$MPElement[Name='Dell.Connections.ServerNumericSensor']/UpperThresholdNonCritical$", UTNonCritical)
				call oDiscoveryData.AddInstance(oInst)
				
				VoltageFlag = 1
			End If
		Next
	End If 'colItems is nothing
			
	If (colItems1 is Nothing) Then
		LogMessage =  "Unable to retrieve object" &amp; sQuery1
	Else
		For Each objItemSensor1 in colItems1
			If Err.Number &lt;&gt; 0 Then
				If Err.Number = -2147023169 Then
					LogMessage =  "RPC Failure occurred for cimv2\dell info : " &amp; Err.Number
				Else
					LogMessage =  "Object RetrievalLoop Error Number:" &amp; Err.Number &amp; "Description:" &amp; Err.Description
				End If
				Err.Clear
			ElseIf (Not objItemSensor1 is Nothing) Then
				Set oInst = oDiscoveryData.CreateClassInstance("$MPElement[Name='Dell.Connections.ServerSensorVoltageDiscreteUnit']$")
				call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", TargetComputer)
				call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.LogicalDevice']/DeviceID$", TargetComputer)
				call oInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", objItemSensor1.Name)
				call oInst.AddProperty("$MPElement[Name='Dell.Connections.ServerDiscreteSensor']/DeviceID$", objItemSensor1.DeviceID)
				call oInst.AddProperty("$MPElement[Name='Dell.Connections.ServerDiscreteSensor']/CurrentReading$", objItemSensor1.CurrentReading)
				call oInst.AddProperty("$MPElement[Name='Dell.Connections.ServerDiscreteSensor']/OtherSensorTypeDescription$", objItemSensor1.OtherSensorTypeDescription)
				call oDiscoveryData.AddInstance(oInst)
						
				VoltageFlag = 1
			End If
		Next
	End If 'colItems1 is Nothing
	
	set colItems = Nothing
	set colItems1 = Nothing
	
	On Error Goto 0
End Function

Function DiscoverFans()
	'Retrieving Fan Units
	On Error resume next
	Dim sQuery, colItems, objItemFans
	
	sQuery = "Select * from CIM_Fan"
	
	Set colItems = objDellConnection.ExecQuery(sQuery)
	If Err.Number &lt;&gt; 0 Then
		LogMessage =  sQuery &amp; " Error Number:" &amp; Err.Number &amp; "Description:" &amp; Err.Description
		If Err.Number = -2147023169 Then
			LogMessage =   "RPC Failure occurred for namespace root-cimv2-dell"
		End If
		Err.Clear
	End If
	If (colItems is Nothing) or (IsNull(colItems)) Then
		LogMessage = "Unable to retrieve Fan Unit"
	Else
		LogMessage = "Fan Unit query retrieved successfully"
		
		For Each objItemFans in colItems
			'Error checking
			If Err.Number &lt;&gt; 0 Then
				LogMessage = "Number:" &amp; Err.Number &amp; "Description:" &amp; Err.Description
			End If
			'Object Retrieval
			If not objItemFans is nothing Then
				Set oInst = oDiscoveryData.CreateClassInstance("$MPElement[Name='Dell.Connections.ServerFansUnit']$")
				call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", TargetComputer)
				call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.LogicalDevice']/DeviceID$", TargetComputer)
				call oInst.AddProperty("$MPElement[Name='Dell.Connections.ServerFansUnit']/DeviceID$", objItemFans.DeviceID)
				call oInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", objItemFans.Name)	
				call oDiscoveryData.AddInstance(oInst)	
						
				FanFlag = 1
			End If 
		Next		
	End If 
	
	Set colItems = Nothing
End Function

Function DiscoverPS()
	'Retrieving PS Units
	On Error resume next
	Dim sQuery, colItems, objItemPS, TotalOutputPower

	sQuery = "Select * from CIM_PowerSupply"
	
	Set colItems = objDellConnection.ExecQuery(sQuery)
	If Err.Number &lt;&gt; 0 Then
		LogMessage =  sQuery &amp; " Error Number:" &amp; Err.Number &amp; "Description:" &amp; Err.Description
		If Err.Number = -2147023169 Then
			LogMessage =   "RPC Failure occurred for namespace root-cimv2-dell"
		End If
		Err.Clear
	End If
	
	If (colItems is Nothing) or (IsNull(colItems)) Then
		LogMessage = "Unable to retrieve PS Unit"
	Else
		LogMessage = "PS Unit query retrieved successfully"
				
		For Each objItemPS in colItems
			'Error checking
			If Err.Number &lt;&gt; 0 Then
						LogMessage = "Number:" &amp; Err.Number &amp; "Description:" &amp; Err.Description
			End If
			'Object Retrieval
			If not objItemPS is nothing Then
				TotalOutputPower = objItemPS.TotalOutputPower
				
				If (TotalOutputPower &lt;= 0) Then
					TotalOutputPower = "N/A"
				Else
					TotalOutputPower = TotalOutputPower/10
				End If
			
				Set oInst = oDiscoveryData.CreateClassInstance("$MPElement[Name='Dell.Connections.ServerPowerSuppliesUnit']$")
				call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", TargetComputer)
				call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.LogicalDevice']/DeviceID$", TargetComputer)
				call oInst.AddProperty("$MPElement[Name='Dell.Connections.ServerPowerSuppliesUnit']/DeviceID$", objItemPS.DeviceID)
				call oInst.AddProperty("$MPElement[Name='Dell.Connections.ServerPowerSuppliesUnit']/TotalOutputPower$", TotalOutputPower)
				call oInst.AddProperty("$MPElement[Name='Dell.Connections.ServerPowerSuppliesUnit']/IsSwitchingSupply$", objItemPS.IsSwitchingSupply)
				call oInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", objItemPS.Name)	
				call oDiscoveryData.AddInstance(oInst)	
						
				PSFlag = 1
			End If 
		Next		
	End If 
	
	Set colItems = Nothing
End Function

Function DiscoverMem()
	'Retrieving Mem Units
	On Error resume next
	Dim sQuery, colItems, objItemMem, MemoryType
	
	sQuery = "Select * from CIM_PhysicalMemory"
	
	Set colItems = objDellConnection.ExecQuery(sQuery)
	If Err.Number &lt;&gt; 0 Then
		LogMessage =  sQuery &amp; " Error Number:" &amp; Err.Number &amp; "Description:" &amp; Err.Description
		If Err.Number = -2147023169 Then
			LogMessage =   "RPC Failure occurred for namespace root-cimv2-dell"
		End If
		Err.Clear
	End If
	If (colItems is Nothing) or (IsNull(colItems)) Then
		LogMessage = "Unable to retrieve Mem Unit"
	Else
		LogMessage = "Mem Unit query retrieved successfully"
		
		For Each objItemMem in colItems
			'Error checking
			If Err.Number &lt;&gt; 0 Then
				LogMessage = "Number:" &amp; Err.Number &amp; "Description:" &amp; Err.Description
			End If
			'Object Retrieval
			If not objItemMem is nothing Then
				MemoryType = objItemMem.MemoryType
				
				If (MemoryType = 0) Then
					MemoryType = "Unknown"
				ElseIf (MemoryType = 1) Then
					MemoryType = "Other"
				ElseIf (MemoryType = 2) Then
					MemoryType = "DRAM"
				ElseIf (MemoryType = 3) Then
					MemoryType = "Synchronous DRAM"
				ElseIf (MemoryType = 4) Then
					MemoryType = "Cache DRAM"
				ElseIf (MemoryType = 5) Then
					MemoryType = "EDO"
				ElseIf (MemoryType = 6) Then
					MemoryType = "EDRAM"
				ElseIf (MemoryType = 7) Then
					MemoryType = "VRAM"
				ElseIf (MemoryType = 8) Then
					MemoryType = "SRAM"
				ElseIf (MemoryType = 9) Then
					MemoryType = "RAM"
				ElseIf (MemoryType = 10) Then
					MemoryType = "ROM"
				ElseIf (MemoryType = 11) Then
					MemoryType = "Flash"
				ElseIf (MemoryType = 12) Then
					MemoryType = "EEPROM"
				ElseIf (MemoryType = 13) Then
					MemoryType = "FEPROM"
				ElseIf (MemoryType = 14) Then
					MemoryType = "EPROM"
				ElseIf (MemoryType = 15) Then
					MemoryType = "CDRAM"
				ElseIf (MemoryType = 16) Then
					MemoryType = "3DRAM"
				ElseIf (MemoryType = 17) Then
					MemoryType = "SDRAM"
				ElseIf (MemoryType = 18) Then
					MemoryType = "SGRAM"
				ElseIf (MemoryType = 19) Then
					MemoryType = "RDRAM"
				ElseIf (MemoryType = 20) Then
					MemoryType = "DDR"
				ElseIf (MemoryType = 21) Then
					MemoryType = "DDR2"
				ElseIf (MemoryType = 22) Then
					MemoryType = "DDR2 FB-DIMM"
				End If

				Set oInst = oDiscoveryData.CreateClassInstance("$MPElement[Name='Dell.Connections.ServerMemoryUnit']$")
				call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", TargetComputer)
				call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.LogicalDevice']/DeviceID$", TargetComputer)
				call oInst.AddProperty("$MPElement[Name='Dell.Connections.ServerMemoryUnit']/Tag$", objItemMem.Tag)
				call oInst.AddProperty("$MPElement[Name='Dell.Connections.ServerMemoryUnit']/MemoryType$", MemoryType)
				call oInst.AddProperty("$MPElement[Name='Dell.Connections.ServerMemoryUnit']/Capacity$", (objItemMem.Capacity)/(1024*1024) &amp; " MB")
				call oInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", objItemMem.Name)	
				call oDiscoveryData.AddInstance(oInst)	
				
				MemFlag = 1
			End If 
		Next		
	End If 
	
	Set colItems = Nothing
End Function

Function DiscoverProc()
	'Retrieving Proc Units
	On Error resume next
	Dim sQuery, colItems, objItemProc, a
	
	sQuery = "Select * from CIM_Processor"
	
	Set colItems = objDellConnection.ExecQuery(sQuery)
	If Err.Number &lt;&gt; 0 Then
		LogMessage =  sQuery &amp; " Error Number:" &amp; Err.Number &amp; "Description:" &amp; Err.Description
		If Err.Number = -2147023169 Then
			LogMessage =   "RPC Failure occurred for namespace root-cimv2-dell"
		End If
		Err.Clear
	End If
			
	If (colItems is Nothing) or (IsNull(colItems)) Then
		LogMessage = "Unable to retrieve Proc Unit"
	Else
		LogMessage = "Proc Unit query retrieved successfully"
		
		For Each objItemProc in colItems
			'Error checking
			If Err.Number &lt;&gt; 0 Then
				LogMessage = "Number:" &amp; Err.Number &amp; "Description:" &amp; Err.Description
			End If
			
			'Object Retrieval
			If not objItemProc is nothing Then
				a = objItemProc.Status  'CR194360
				If Not IsNull(a) Then	'CR194360
					Set oInst = oDiscoveryData.CreateClassInstance("$MPElement[Name='Dell.Connections.ServerProcessorsUnit']$")
					call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", TargetComputer)
					call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.LogicalDevice']/DeviceID$", TargetComputer)
					call oInst.AddProperty("$MPElement[Name='Dell.Connections.ServerProcessorsUnit']/DeviceID$", objItemProc.DeviceID)
					call oInst.AddProperty("$MPElement[Name='Dell.Connections.ServerProcessorsUnit']/CurrentClockSpeed$", objItemProc.CurrentClockSpeed &amp; " MHz")
					call oInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", objItemProc.Name)	
					call oDiscoveryData.AddInstance(oInst)	
				End If					'CR194360
				ProcFlag = 1
			End If 
		Next		
	End If 
	
	Set colItems = Nothing
End Function

Function DiscoverIntrusion()
	'Retrieving Security Breach parameter
	On Error resume next
	Dim sQuery, colItems, objItem
	
	sQuery = "Select * from DELL_Chassis"
	
	Set colItems = objDellConnection.ExecQuery(sQuery)
	If Err.Number &lt;&gt; 0 Then
		LogMessage =  sQuery &amp; " Error Number:" &amp; Err.Number &amp; "Description:" &amp; Err.Description
		If Err.Number = -2147023169 Then
			LogMessage =   "RPC Failure occurred for namespace root-cimv2-dell"
		End If
		Err.Clear
	End If
			
	If (colItems is Nothing) or (IsNull(colItems)) Then
		LogMessage = "Unable to retrieve Security Breach parameter"
	Else
		LogMessage = "Security Breach parameter retrieved successfully"
		
		For Each objItem in colItems
			'Error checking
			If Err.Number &lt;&gt; 0 Then
				LogMessage = "Number:" &amp; Err.Number &amp; "Description:" &amp; Err.Description
			End If
			
			'Object Retrieval
			If not objItem is nothing Then
				If objItem.SecurityBreach &lt;&gt; 2 Then
					IntrusionFlag = 1
				End If
			End If 
		Next		
	End If 
	
	Set colItems = Nothing
End Function

Public Function GetBaseBoardType ()
	'Retrieving Base board type
	On Error resume next
	Dim sQuery, colItems, objItem
	
	sQuery = "Select * from DELL_Baseboard"
	
	Set colItems = objDellConnection.ExecQuery(sQuery)
	If Err.Number &lt;&gt; 0 Then
		LogMessage =  sQuery &amp; " Error Number:" &amp; Err.Number &amp; "Description:" &amp; Err.Description
		If Err.Number = -2147023169 Then
			LogMessage =   "RPC Failure occurred for namespace root-cimv2-dell"
		End If
		Err.Clear
	End If
	If (colItems is Nothing) or (IsNull(colItems)) Then
		LogMessage = "Unable to retrieve Base board type"
	Else
		LogMessage = "Base board type retrieved successfully"
		
		For Each objItem in colItems
			'Error checking
			If Err.Number &lt;&gt; 0 Then
				LogMessage = "Number:" &amp; Err.Number &amp; "Description:" &amp; Err.Description
			End If
			'Object Retrieval
			If not objItem is nothing Then
				BaseBoardType = objItem.BaseboardType
			End If 
		Next		
	End If 
	
	Set colItems = Nothing
End Function

									</ScriptBody>
                <TimeoutSeconds>300</TimeoutSeconds>
              </DataSource>
            </MemberModules>
            <Composition>
              <Node ID="DS" />
            </Composition>
          </Composite>
        </ModuleImplementation>
        <OutputType>System!System.Discovery.Data</OutputType>
      </DataSourceModuleType>
      <DataSourceModuleType ID="Dell.Connections.DellServerBIOS.DiscoveryRule" Accessibility="Internal" Batching="false">
        <Configuration>
          <xsd:element name="IntervalSeconds" type="xsd:integer" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
          <xsd:element name="Computer" type="xsd:string" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
        </Configuration>
        <OverrideableParameters>
          <OverrideableParameter ID="IntervalSeconds" Selector="$Config/IntervalSeconds$" ParameterType="int" />
        </OverrideableParameters>
        <ModuleImplementation Isolation="Any">
          <Composite>
            <MemberModules>
              <DataSource ID="DS" TypeID="Windows!Microsoft.Windows.TimedScript.DiscoveryProvider">
                <IntervalSeconds>$Config/IntervalSeconds$</IntervalSeconds>
                <SyncTime />
                <ScriptName>DellServerBIOSDiscovery.vbs</ScriptName>
                <Arguments>$MPElement$ $Target/Id$ $Config/Computer$</Arguments>
                <ScriptBody>
Option Explicit
On Error Resume Next
Dim oArgs
Set oArgs = WScript.Arguments
if oArgs.Count &lt; 3 Then
   Wscript.Quit -1
End If

Dim SourceID, ManagedEntityId, TargetComputer

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

Dim oAPI, oDiscoveryData, oInst, strComputer, LogMessage, objConnection, wbemObjectSet, objItemBIOS

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

Set objConnection = GetObject("winmgmts:" &amp; "{impersonationLevel=impersonate}!\\" &amp; strComputer &amp; "\root\cimv2")
If Err.Number &lt;&gt; 0 Then
	LogMessage =  "WMI Cimv2Dell Error Number : " &amp; Err.Number &amp; ". Description :" &amp; Err.Description
	Err.Clear
Else
	If IsEmpty(objConnection) Then
		LogMessage =  "Unable to open WMI Namespace root-cimv2.  Check to see if the WMI service is enabled and running " &amp; Err
	Else
	  'Retrieving the BIOS Information
		Set wbemObjectSet = objConnection.ExecQuery("Select * from Win32_BIOS")
		If Err.Number &lt;&gt; 0 Then
			LogMessage = "Number:" &amp; Err.Number &amp; "Description:" &amp; Err.Description
		End If
		If (wbemObjectSet is Nothing) Or (isNull(wbemObjectSet)) Then
			LogMessage = "Unable to retrieve BIOS information"
		Else
			LogMessage = "BIOS Information retrieved successfully"
					
			For Each objItemBIOS in wbemObjectSet
				'Error checking
				If Err.Number &lt;&gt; 0 Then
					LogMessage = "Number:" &amp; Err.Number &amp; "Description:" &amp; Err.Description
				End If
				
				'Object Retrieval
				If not objItemBIOS is nothing Then
					set oInst = oDiscoveryData.CreateClassInstance("$MPElement[Name='Dell.Connections.DellServer.BIOS']$")
					call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", TargetComputer)
					call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.LogicalDevice']/DeviceID$", TargetComputer)
					call oInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", objItemBIOS.SerialNumber)
					call oInst.AddProperty("$MPElement[Name='Dell.Connections.DellServer.BIOS']/Version$", objItemBIOS.Version)
					call oInst.AddProperty("$MPElement[Name='Dell.Connections.DellServer.BIOS']/Manufacturer$", objItemBIOS.Manufacturer)
					call oInst.AddProperty("$MPElement[Name='Dell.Connections.DellServer.BIOS']/Name$", objItemBIOS.Name)
					call oInst.AddProperty("$MPElement[Name='Dell.Connections.DellServer.BIOS']/SerialNumber$", objItemBIOS.SerialNumber)
					call oInst.AddProperty("$MPElement[Name='Dell.Connections.DellServer.BIOS']/SMBIOSBIOSVersion$", objItemBIOS.SMBIOSBIOSVersion)
					call oInst.AddProperty("$MPElement[Name='Dell.Connections.DellServer.BIOS']/SMBIOSMajorVersion$", objItemBIOS.SMBIOSMajorVersion)
					call oInst.AddProperty("$MPElement[Name='Dell.Connections.DellServer.BIOS']/SMBIOSMinorVersion$", objItemBIOS.SMBIOSMinorVersion)
					call oInst.AddProperty("$MPElement[Name='Dell.Connections.DellServer.BIOS']/SMBIOSPresent$", objItemBIOS.SMBIOSPresent)
					call oInst.AddProperty("$MPElement[Name='Dell.Connections.DellServer.BIOS']/PrimaryBIOS$", objItemBIOS.PrimaryBIOS)
					call oInst.AddProperty("$MPElement[Name='Dell.Connections.DellServer.BIOS']/Status$", objItemBIOS.Status)
					call oInst.AddProperty("$MPElement[Name='Dell.Connections.DellServer.BIOS']/CurrentLanguage$", objItemBIOS.CurrentLanguage)
					call oDiscoveryData.AddInstance(oInst)
				End If
			Next
	  End If
		Set wbemObjectSet = Nothing
	End If
End If

' Submit the data
Call oAPI.Return(oDiscoveryData) 

Set oDiscoveryData = Nothing
Set oAPI = Nothing
Set objConnection = Nothing

									</ScriptBody>
                <TimeoutSeconds>300</TimeoutSeconds>
              </DataSource>
            </MemberModules>
            <Composition>
              <Node ID="DS" />
            </Composition>
          </Composite>
        </ModuleImplementation>
        <OutputType>System!System.Discovery.Data</OutputType>
      </DataSourceModuleType>
      <DataSourceModuleType ID="Dell.Connections.ServerBMCDiscovery" Accessibility="Internal" Batching="false">
        <Configuration>
          <xsd:element name="IntervalSeconds" type="xsd:integer" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
          <xsd:element name="Computer" type="xsd:string" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
        </Configuration>
        <OverrideableParameters>
          <OverrideableParameter ID="IntervalSeconds" Selector="$Config/IntervalSeconds$" ParameterType="int" />
        </OverrideableParameters>
        <ModuleImplementation Isolation="Any">
          <Composite>
            <MemberModules>
              <DataSource ID="DS" TypeID="Windows!Microsoft.Windows.TimedScript.DiscoveryProvider">
                <IntervalSeconds>$Config/IntervalSeconds$</IntervalSeconds>
                <SyncTime />
                <ScriptName>DellServerBMCDiscovery.vbs</ScriptName>
                <Arguments>$MPElement$ $Target/Id$ $Config/Computer$</Arguments>
                <ScriptBody>
'**********************************************************************************
' Script Name - Dell Server BMC Discovery
' Author: Vignesh Pandian
'
' Description:
' Discover BMC and DRAC components for a Dell server with instrumentation using CIM	
' A02 revision - Fix for BSOD given racadm not being terminated.
'
' (c) Copyright Dell Inc. 2007 - All rights reserved           
'**********************************************************************************

Option Explicit
On Error Resume Next
Dim oArgs, bmcip, SourceID, ManagedEntityId, TargetComputer, msg, version, Message

Dim blsRacType, blsRacInstalled , blsRacGen4, RegError, rc, blsRacGen4Plus
Dim	WshShell, oShell, objStdOut, oFile, fso, strLine, nPos, RacadmErrStream
Dim strRACURL, strRacType, strRacIpAddress, strRacPortNumber, strRacPortDec
Dim RacPath, drive, wintemp_path, filespec, filespec5Plus, filespec4
Dim Command10, Command11, Command2, Command3, a, b, RacExitFlag
Dim WshShell2, oShell2, objStdOut2 ' Exec cfgLan
Dim WshShell3, oShell3, objStdOut3 ' Run cfgLan
Const WAIT_LOOP = 1000000
	
Set oArgs = WScript.Arguments
if oArgs.Count &lt; 3 Then
   Wscript.Quit -1
End If

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

bmcip = getBMC_IP()
strracUrl = GetRACUrl()
Dim vAPI
Set vAPI = CreateObject("MOM.ScriptAPI")
	
	Dim oAPI, oDiscoveryData, oInst
	Set oAPI = CreateObject("MOM.ScriptAPI")
	set oDiscoveryData = oAPI.CreateDiscoveryData(0, SourceId, ManagedEntityId)

If Instr(bmcip,".") &gt; 0 Then
	set oInst = oDiscoveryData.CreateClassInstance("$MPElement[Name='Dell.Connections.ServerBMC']$")
	call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", TargetComputer)
	call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.LogicalDevice']/DeviceID$", TargetComputer)
	call oInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "BMC")	
	call oInst.AddProperty("$MPElement[Name='Dell.Connections.ServerBMC']/BMCIPAddress$", bmcip)	
	call oDiscoveryData.AddInstance(oInst)
Else	
	msg = "No BMC object will be created"
End If

If Instr(strracUrl,".") &gt; 0 Then
	set oInst = oDiscoveryData.CreateClassInstance("$MPElement[Name='Dell.Connections.DellDRAC']$")
	call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", TargetComputer)
	call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.LogicalDevice']/DeviceID$", TargetComputer)
	If Instr(strracUrl,"i") &gt; 0 Then
		call oInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "iDRAC")	
		strracUrl = Replace(strracUrl,"i","")
	Else
		call oInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "DRAC")	
	End If
	call oInst.AddProperty("$MPElement[Name='Dell.Connections.DellDRAC']/DracURL$", strracUrl)	
	call oDiscoveryData.AddInstance(oInst)
Else
	msg = "No RAC object will be created"
End If

	' Submit the data
	Call oAPI.Return(oDiscoveryData) 
	Set oDiscoveryData = Nothing
	Set oAPI = Nothing

Set vAPI = Nothing

Function getBMC_IP
	Dim objItemBmcIP, colItems, objDellConnection, strComputer, sBmcQuery, sBmcIP, UpdateBMC_IP, GetBmcIP, LogMessage
	strComputer="."
	set objDellConnection = GetObject("winmgmts:" &amp; "{impersonationLevel=impersonate}!\\" &amp; strComputer &amp; "\root\cimv2\Dell")
	If Err.Number &lt;&gt; 0 Then
		LogMessage = "WMI Cimv2Dell Error Number : " &amp; Err.Number &amp; ". Description :" &amp; Err.Description
		UpdateBMC_IP = 0
		Err.Clear
	Else
		If IsEmpty(objDellConnection) Then
			LogMessage = "Unable to open WMI Namespace root-cimv2-dell.  Check to see if the WMI service is enabled and running, and Install/Re-Install ServerAdministrator to ensure this WMI namespace exists. " &amp; Err
			UpdateBMC_IP = 0
		Else
			sBmcQuery = "Select * from Dell_RemoteAccessServicePort"
			Set colItems = objDellConnection.ExecQuery(sBmcQuery)
			If Err.Number &lt;&gt; 0 Then
				LogMessage = sBmcQuery &amp; " Error Number:" &amp; Err.Number &amp; "Description:" &amp; Err.Description
				If Err.Number = -2147023169 Then
					LogMessage =  "RPC Failure occurred for namespace root-cimv2-dell"
					UpdateBMC_IP = 0
				End If
				Err.Clear
			End If
			If colItems is Nothing Then
				LogMessage = "Unable to retrieve RemoteAccessServicePort object"
			Else
				LogMessage = "RemoteAccessServicePort object retrieved successfully"

				For Each objItemBmcIP in colItems
					If Err.Number &lt;&gt; 0 Then
						If Err.Number = -2147023169 Then
							LogMessage = "RPC Failure occurred for cimv2\dell - bmc info : " &amp; Err.Number
							UpdateBMC_IP = 0
						ElseIf Err.Number = -2147217389 Then
							LogMessage = "If BMC present, Please Install/Re-Install ServerAdministrator on Dell Server : " &amp; fqdn2 &amp; Err.Number
							Msg = 1
							UpdateBMC_IP = 1
						Else
							LogMessage = "Object RetrievalLoop Error Number:" &amp; Err.Number &amp; "Description:" &amp; Err.Description
							UpdateBMC_IP = 0
						End If
						Err.Clear
					End If
					If Not objItemBmcIP is Nothing Then
						sBmcIP = objItemBmcIP.AccessInfo
					End If
				Next
			End If 'colItems is nothing
			
			Set colItems = Nothing
		End If 'dellconnection is noting
		On Error GoTo 0
	End If 'error on dellconnection

	'Check sBmcIP values
	If sBmcIP = "" Then  
		GetBmcIP = -1
		If Msg &lt;&gt; 1 AND UpdateBMC_IP = 1 Then
			LogMessage = "BMC physically not present for the Dell Server / Invalid Configuration of BMC / OMSA ReInstallation needed"
		End If
	Else ' if sBmcIP contains an ip	
		getBMC_IP = sBmcIP
	End If

	Set objItemBmcIP = Nothing
	Set colItems = Nothing
	Set objDellConnection = Nothing
End Function

'***************************************************************
' Function Additions for RAC
' Functions:
'		ExecRacUrl()			- Exec racadm and Parse StdOut  
'		RunRacUrl()			- Run racadm and Parse File
'		CheckVBScriptEngine()		- Check VBScript Version
'		GetRACADMPath()			- Get racadm.exe path
'		GetRACInstallRoot()		- Get Drive letter of path
'		bFileExists()			- Check whether file exists
'		HexToDec()			- convert Hex to Decimal number
'		MOMDebugLog()			- Send LogMessage to MOMDebugLog
'		GetPathParameter()		- Get RACADM path and drive letter
'		GetTempFolderPath()		- Get Win Temp Folder path
'		GetRACFileGUID()		- Get 2 GUIDs for IP, Port File
'***************************************************************

Public Function GetRACUrl
	Dim objAlert, strLaunchRACURL, RACAgentExist, strAlertDesc
	Dim version, rc, rac, RegError, sRACUrl
	Dim LogMessage, Message
	RACAgentExist = 0
	RacExitFlag = 0
	sRACUrl = 0
	Dim version1
	
	version1 = CheckVBScriptEngine()'Check VBScript engine version
	If version1 = True Then 
	' Exec , Read from Standard Output
	rc = ExecRACURL (RACAgentExist, strLaunchRACURL)
		If rc &lt;&gt; 0 Then 
			Message = "Main: ExecRACURL error : " &amp; rc
			RacExitFlag = 1
			Exit Function
		End If
	ElseIf version1 = False Then
		' Run , Redirect to file and Read from File
		rc =RunRACURL (RACAgentExist, strLaunchRACURL)
		If rc &lt;&gt; 0 Then 
				Message = "Main: RunRACURL error : " &amp; rc
				RacExitFlag = 1
				Exit Function
		End If
	Else 
		Message = "CheckVBScriptEngine Error : " &amp; version1
		RacExitFlag = 1
		Exit Function
	End If

	Message = "Main:RACURL (AgentExist,URL) - " &amp; RACAgentExist &amp; "," &amp; strLaunchRACURL
	If RacExitFlag = 0 Then
		If RACAgentExist = 1 Then	' If RAC Agent exists
			sRACUrl = strLaunchRACURL
		End If	
	End If

	Set objAlert = Nothing
	Set strLaunchRACURL = Nothing
	Set strAlertDesc = Nothing
	Set rc = Nothing
	GetRACUrl = sRACUrl
End Function

'*****************************************************************
' ExecRacUrl
' Routine to Exec Cmd and Read From Standard Output
'*****************************************************************
Function ExecRacUrl(ByRef RacAgent, ByRef RacUrl)	
	blsRacInstalled = 0     ' IP address Existence
	blsRacGen4Plus = 0      ' Port Existence (subset of RacInstalled)
	RegError = 0
	a = 0
	b = 0
	Command10 = "racadm.exe getconfig -g cfgCurrentLanNetworking"
	Command11 = "racadm.exe getconfig -g cfgLanNetworking"
	Command2 = "racadm.exe getconfig -g cfgRacTuning"
	Command3 = "racadm.exe getconfig -g idRacInfo"
	
	GetPathParameter RacPath, drive
	If RacExitFlag = 1 Then
		ExecRacUrl = -1
		Exit Function
	End If
'''
	Set WshShell = CreateObject("WScript.Shell")
	Command3 = RacPath &amp; "\" &amp; Command3
	Message = "ExecRacUrl: Cmd for RACType - " &amp; Command3
	Set oShell = WshShell.Exec(Command3)
	WScript.Sleep(5000)
	Do While oShell.Status &lt;&gt; 1
		WScript.Sleep(0)
		a = a + 1
		b = a Mod WAIT_LOOP
		If b = 0 Then
			Message = "Exit ExecCmd. Reason: RACADM idRacInfo not responding for " &amp; WAIT_LOOP &amp; " loops." 
			oShell.Terminate()
			Exit Do
		End If
	Loop
	Set objStdOut = oShell.StdOut
	If Not oShell.StdErr.AtEndOfStream Then
		RacadmErrStream = "STDERR: " + oShell.StdErr.ReadAll
		Message = "RACADM Standard Error - " &amp; RacadmErrStream
		ExecRacUrl = -1
		Exit Function
	Else
		Do While Not objStdOut.AtEndOfStream
			strLine = objStdOut.ReadLine
			If Instr(Lcase(strLine),"error") Then
				RacAgent = 0
				Message = "Error in Racadm Output for RACType " &amp; strLine
				ExecRacUrl = -1
				Exit Function
			ElseIf Instr(LCase(strLine),Lcase("idRacType")) Then
				nPos = Instr(LCase(strLine), "=")
				strRacType = Trim(strLine)
				strRacType = Mid(strRacType,nPos+1,5)
				strRacType = Trim(strRacType)
				blsRacType = 1
				Message = "Detected DRAC Type (hex)= " &amp; strRacType
			End If
		Loop
	End If
	
	oShell.Terminate()
	Set oShell = Nothing
	Set WshShell = Nothing

	If blsRacType = 1 Then
		If Instr(Lcase(strRacType),"3") OR Instr(Lcase(strRacType),"4") OR Instr(Lcase(strRacType),"5") OR Instr(Lcase(strRacType),"7")Then
			'Method1 for DRAC4 or below
			Set WshShell = CreateObject("WScript.Shell")
			Command10 = RacPath &amp; "\" &amp; Command10
			Message = "ExecRacUrl: Cmd for IPAddress (DRAC4 or lesser) - " &amp; Command10
			Set oShell = WshShell.Exec(Command10)
			WScript.Sleep(5000)
			Do While oShell.Status &lt;&gt; 1
				WScript.Sleep(0)
				a = a + 1
				b = a Mod WAIT_LOOP
				If b = 0 Then
					Message = "Exit ExecCmd. Reason: RACADM cfgCurrentlanNetworking not responding for " &amp; WAIT_LOOP &amp; " loops." 
					oShell.Terminate()
					Exit Do
				End If
			Loop
			Set objStdOut = oShell.StdOut
	
			Do While Not objStdOut.AtEndOfStream
				strLine = objStdOut.ReadLine
				If Instr(Lcase(strLine),"error") Then
					RacAgent = 0
					Message = "Error in Racadm Output for IPaddr (DRAC4 or lesser)" &amp; strLine
					ExecRacUrl = -1
					Exit Function
				End If
				If Instr(LCase(strLine),Lcase("cfgNicCurrentIpAddress")) Then
					nPos = Instr(LCase(strLine), "=")
					strRacIpAddress = Trim(strLine)
					strRacIpAddress = Mid(strRacIpAddress,nPos+1,16)
					blsRacInstalled = 1
				End If
			Loop

			oShell.Terminate()
			Set oShell = Nothing
			Set WshShell = Nothing
		ElseIf (Instr(Lcase(strRacType),"6") OR Instr(Lcase(strRacType),"8")) Then
			'Method2
			Set WshShell2 = CreateObject("WScript.Shell")
			Command11 = RacPath &amp; "\" &amp; Command11
			Message = "ExecRacUrl: Cmd for IPAddress (DRAC5/iDRAC) - " &amp; Command11
			Set oShell2 = WshShell2.Exec(Command11)
			WScript.Sleep(5000)
			Do While oShell2.Status &lt;&gt; 1
				WScript.Sleep(0)
				a = a + 1
				b = a Mod WAIT_LOOP
				If b = 0 Then
					Message = "Exit ExecCmd. Reason: RACADM cfgLanNetworking not responding for " &amp; WAIT_LOOP &amp; " loops." 
					oShell.Terminate()
					Exit Do
				End If
			Loop
			Set objStdOut2 = oShell2.StdOut
			Do While Not objStdOut2.AtEndOfStream
				strLine = objStdOut2.ReadLine
				If Instr(Lcase(strLine),"error") Then
					RacAgent = 0
					Message = "Error in Racadm Output for IPaddr " &amp; strLine
					ExecRacUrl = -1
					Exit Function
				End If
				If Instr(LCase(strLine),Lcase("cfgNicIpAddress")) Then
					nPos = Instr(LCase(strLine), "=")
					strRacIpAddress = Trim(strLine)
					strRacIpAddress = Mid(strRacIpAddress,nPos+1,16)
					blsRacInstalled = 1
				End If
			Loop
			
			oShell2.Terminate()
			Set oShell2 = Nothing
			Set WshShell2 = Nothing
		Else ' When DRAC Type is nether 3,4,5,6,7
			Message = "Unsupported DRAC Type = " &amp; strRacType
		End If
	End If
'''
	Set oShell = Nothing
	Set	objStdOut = Nothing

	If blsRacInstalled = 1 Then
	' If Command10 runs and IpAddress was found
		Set WshShell = CreateObject("WScript.Shell")
		Command2 = RacPath &amp; "\" &amp; Command2
		Message = "ExecRacUrl: Cmd for PortNumber - " &amp; Command2
		Set oShell = WshShell.Exec(trim(Command2))
		WScript.Sleep(5000)
		Do While oShell.Status &lt;&gt; 1
			WScript.Sleep(0)
			a = a + 1
			b = a Mod WAIT_LOOP
			If b = 0 Then
				Message = "Exit ExecCmd. Reason: RACADM port cmd not responding for " &amp; WAIT_LOOP &amp; " loops." 
				oShell.Terminate()
				Exit Do
			End If
		Loop
		Set objStdOut = oShell.StdOut

		Do While Not objStdOut.AtEndOfStream
			strLine = objStdOut.ReadLine
			If Instr(Lcase(strLine),"error") Then
				RacAgent = 0
				Message = "Error in Racadm Output for Port " &amp; strLine
				Exit Function
			End If
			If Instr(LCase(strLine),LCase("cfgRacTuneHttpsPort")) Then
				nPos = Instr(LCase(strLine), "=")
			    strRacPortNumber= Trim(strLine)
				If Instr(strRacPortNumber,"0x") Then
					strRacPortNumber= Mid(strRacPortNumber,nPos+1+2,16) '+2 to compensate 0x
					Message = "Hex httpsPort value from cfgRacTuning = " &amp; strRacPortNumber
					strRacPortNumber = HexToDec(strRacPortNumber)
					Message = "Hex to Dec convert result in = " &amp; strRacPortNumber
				Else
					strRacPortNumber= Mid(strRacPortNumber,nPos+1,16) '
					Message = "RAC5Plus Decimal Port = " &amp; strRacPortNumber
				End If
				blsRacGen4Plus = 1
			End	If
		Loop

		oShell.Terminate()
		Set oShell = Nothing
		Set WshShell = Nothing

		If blsRacGen4Plus = 1 Then
			strRACURL = "https://" &amp; strRacIpAddress &amp; ":" &amp; strRacPortNumber
		Else 
			strRACURL = "https://" &amp; strRacIpAddress
		End If
		If Instr(strRacType,"8") Then
			strRACURL = "i" &amp; strRACURL
		End If
	End If ' If blsRacInstalled = 1

	RacAgent = blsRacInstalled
	RacUrl = strRACURL

	Set objStdOut = Nothing
	If Err &lt;&gt; 0 Then
		ExecRacUrl = Err.Number
		Message = "ExecRACUrl ErrorNo= " &amp; Err.No &amp; ", Description: " &amp; Err.Desc
		Err.Clear
	End If
End Function

'**********************************************************
' CheckVBScriptEngine()
' Check VBScript engine version:
'**********************************************************
Function CheckVBScriptEngine()
	Dim bIsCompatV,  var
	Const VBSCRIPT_MIN_VERSION = 5.6
	Err.Clear
	var = ScriptEngineMajorVersion &amp; "." &amp; ScriptEngineMinorVersion
	If (CInt(var)) &lt; VBSCRIPT_MIN_VERSION Then
		bIsCompatV = False
	Else
		bIsCompatV = True
	End If
	If Err &lt;&gt; 0 Then
		CheckVBScriptEngine	= Err.Number
		Message = "VBScriptEngine Error = " &amp; Err.Number
	Else
		CheckVBScriptEngine = bIsCompatV
	End If
End Function

'*****************************************************************
'GetRacadmPath
'Routine to read the registry to query the OMSA Install Path
'*****************************************************************
Function GetRACADMPath(ByRef o_sPath)
	Const DEF_RACADM_PATH = "C:\Program Files\Dell\OpenManage\RAC\MN"
	Const RACADM_REG_INTALL_PATH = "HKEY_LOCAL_MACHINE\SOFTWARE\Dell Computer Corporation\OpenManage\Remote Access Card Managed Node\PATH"
	Const RACADM64_REG_INTALL_PATH = "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432node\Dell Computer Corporation\OpenManage\Remote Access Card Managed Node\PATH"
	Dim strRacadmKey, tmp

	strRacadmKey = RACADM_REG_INTALL_PATH
	Set oShell = CreateObject ("WScript.Shell")
	o_sPath = ""
	On Error Resume Next
	o_sPath = oShell.RegRead(strRacadmKey)

	If o_sPath = "" Then
		o_sPath = oShell.RegRead(RACADM64_REG_INTALL_PATH)
		If Err &lt;&gt; 0 Then
			Err.Clear
		End If
	End If

	If o_sPath = "" Then
		tmp = DEF_RACADM_PATH &amp; "\racadm.exe"
		If(bFileExists(tmp)) Then
			o_sPath = DEF_RACADM_PATH
			Message = "RACADM Registry is empty, Using Default Path" &amp; DEF_RACADM_PATH
			Err.Clear
		Else
			RegError = 1
		End If
	End If
	If Err &lt;&gt; 0 Then
		GetRACADMPath = Err.Number
	End If
	Set oShell = Nothing
End Function

'*****************************************************************
'GetOMInstallRoot
'Routine to determine the Drive letter where OMSA is installed
'*****************************************************************
Private Function GetRACInstallRoot(ByRef path, ByVal RACInstallPath)
	On Error Resume Next
	Err.Clear
	' Return the root drive of the OMInstall Path
	path = Left(RACInstallPath, 2)
	If Err &lt;&gt; 0 Then
		GetRACInstallRoot = Err.Number
	End If
End Function

'*****************************************************************
' RunRacUrl
'Routine to use Run - Redirect to file and Read from File,Del File
'*****************************************************************
Function RunRacUrl(ByRef RacAgent, ByRef RacUrl)	
	RegError = 0
	Const ForReading = 1 
	Dim guid1, guid2, guid3, guid4
	Command10 = " getconfig -g cfgCurrentLanNetworking"
	Command11 = " getconfig -g cfgLanNetworking"
	Command2 = " getconfig -g cfgRacTuning"
	Command3 = " getconfig -g idRacInfo"

	blsRacInstalled = 0 ' will have IP address
	blsRacGen4Plus = 0  ' will have Port (subset of RacInstalled)

	GetPathParameter RacPath, drive
	GetTempFolderPath wintemp_path, drive
	GetRACFileGUID guid1, guid2

	If RacExitFlag = 1 Then
		Exit Function
	End If

	filespec = wintemp_path &amp; "\" &amp; guid1 &amp; ".txt"
	Command3 = "cmd /c " &amp; chr(34) &amp; RacPath &amp; "\racadm.exe" &amp; Chr(34) &amp; Command3 &amp; " &gt; " &amp; filespec
	Message = "Run: Command for DRAC Type - " &amp; Command3
	Set oShell3 = CreateObject ("WScript.Shell")
	rc = oShell3.run(Command3,0,true)	
	WScript.Sleep(5000)
	Do While bFileExists(filespec) &lt;&gt; -1	
		WScript.Sleep(0)
	Loop
	
	Set fso = CreateObject("Scripting.FileSystemObject")
	Set oFile = fso.OpenTextFile(filespec, ForReading, False)
	Do While Not oFile.AtEndOfStream 
		strLine = Trim(oFile.ReadLine)
		If Instr(Lcase(strLine),"error") Then
			RacAgent = 0
			Message = "Error in Racadm Output for idRacInfo " &amp; strLine
			rc = DelFile(filespec)
			If rc &lt;&gt; 0 Then 
				Message = "Error! - DelFile " &amp; filespec 
			End If
			RunRacUrl = -1
			Exit Function 'Add MP22UT.X01
		End If
		If Instr(LCase(strLine),Lcase("idRacType")) Then
			nPos = Instr(LCase(strLine), "=")
			strRacType = Trim(strLine)
			strRacType = Mid(strRacType,nPos+1,5)
			strRacType = Trim(strRacType)
			Message = "Detected DRAC Type (hex)= " &amp; strRacType
			blsRacType = 1
		End If
	Loop

	Set oShell3 = Nothing
	'Set objStdOut = Nothing
	oFile.close
	'Clean up the CLI Output : Delete %WINTEMP% \ %Guid1% .txt
	rc = DelFile(filespec)
	If rc &lt;&gt; 0 Then 
		Message = "Error! - DelFile " &amp; filespec
	End If
	Set filespec = Nothing
'''''''
	If blsRacType = 1 Then
		GetRACFileGUID guid3, guid4
		If Instr(Lcase(strRacType),"3") OR Instr(Lcase(strRacType),"4") OR Instr(Lcase(strRacType),"5") OR Instr(Lcase(strRacType),"7")Then
			'Method1 for DRAC4 or below
			filespec4 = wintemp_path &amp; "\" &amp; guid4 &amp; ".txt"
			'Set WshShell3 = CreateObject("WScript.Shell")
			Command10 = "cmd /c " &amp; chr(34) &amp; RacPath &amp; "\racadm.exe" &amp; Chr(34) &amp; Command10 &amp; " &gt; " &amp; filespec4
			Set oShell3 = CreateObject ("WScript.Shell")
			rc = oShell3.run(Command10,0,true)	
			WScript.Sleep(5000)
			Message = "IPADDR: RunRacUrl: Run " &amp; Command10
	
			' Loop Until file RAC1Guid.txt is created
			Do While bFileExists(filespec4) &lt;&gt; -1	
				WScript.Sleep(0)
			Loop

			Set fso = CreateObject("Scripting.FileSystemObject")
			Set oFile = fso.OpenTextFile(filespec4, ForReading, False)
			Do While Not oFile.AtEndOfStream 
				strLine = Trim(oFile.ReadLine)
				If Instr(Lcase(strLine),"error") Then
					RacAgent = 0
					Message = "Error in Racadm Output for IPaddr " &amp; strLine
					rc = DelFile(filespec4)
					If rc &lt;&gt; 0 Then 
						Message = "Error! - DelFile " &amp; filespec4 
					End If
					RunRacUrl = -1
					Exit Function
				End If
				If Instr(LCase(strLine),Lcase("cfgNicCurrentIpAddress")) Then
					nPos = Instr(LCase(strLine), "=")
					strRacIpAddress = Trim(strLine)
			        strRacIpAddress = Mid(strRacIpAddress,nPos+1,16)
					blsRacInstalled = 1
				End If
			Loop

			Set oShell3 = Nothing
			'Set objStdOut = Nothing
			oFile.close
			'Clean up the CLI Output : Delete %WINTEMP% \ %Guid1% .txt
			rc = DelFile(filespec4)
			If rc &lt;&gt; 0 Then 
				Message = "Error! - DelFile " &amp; filespec4 
			End If
			Set filespec4 = Nothing
		ElseIf Instr(Lcase(strRacType),"6") Then
			' Method for DRAC5 
			filespec5Plus = wintemp_path &amp; "\" &amp; guid3 &amp; ".txt"
			'Set WshShell3 = CreateObject("WScript.Shell")
			Command11 = "cmd /c " &amp; chr(34) &amp; RacPath &amp; "\racadm.exe" &amp; Chr(34) &amp; Command11 &amp; " &gt; " &amp; filespec5Plus
			Set oShell3 = CreateObject ("WScript.Shell")
			rc = oShell3.run(Command11,0,true)	
			WScript.Sleep(5000)
			' Infinite Loop Until file RAC3Guid.txt is created
			Do While bFileExists(filespec5Plus) &lt;&gt; -1	
				WScript.Sleep(0)
			Loop

			Set fso = CreateObject("Scripting.FileSystemObject")
			Set oFile = fso.OpenTextFile(filespec5Plus, ForReading, False)
			Do While Not oFile.AtEndOfStream 
				strLine = Trim(oFile.ReadLine)
				If Instr(Lcase(strLine),"error") Then
					RacAgent = 0
					Message = "Error in Racadm Output for IPaddr cfgLan " &amp; strLine
					rc = DelFile(filespec5Plus)
					If rc &lt;&gt; 0 Then 
						Message = "Error! - DelFile " &amp; filespec5Plus 
					End If
					RunRacUrl = -1
					Exit Function
				End If
				If Instr(LCase(strLine),Lcase("cfgNicIpAddress")) Then
					nPos = Instr(LCase(strLine), "=")
					strRacIpAddress = Trim(strLine)
			        strRacIpAddress = Mid(strRacIpAddress,nPos+1,16)
					blsRacInstalled = 1
				End If
			Loop

			Set oShell3 = Nothing
			'Set WshShell3 = Nothing
			'Set objStdOut = Nothing
			oFile.close
			'Clean up the CLI Output : Delete %WINTEMP% \ %Guid1% .txt
			rc = DelFile(filespec5Plus)
			If rc &lt;&gt; 0 Then 
				Message = "Error! - DelFile " &amp; filespec5Plus
			End If
			Set filespec5Plus = Nothing
		' End of RAC5+ If clause
		Else ' When DRAC Type is nether 3,4,5,6,7
			Message =  "Unsupported DRAC Type = " &amp; strRacType
		End If
	Else
		Message = "DRAC Type not found via idRacInfo command. " 
	End If ' End of blsRacType IF clause
	' Output OMSA CLI to file RACGuid1.txt, wait until RUN Command is completed
	' RAC5+ cfgLanNetworking in place of cfgCurrentLanNetworking (Invalid Group)

	If blsRacInstalled = 1 Then
	' If Command10/Command11 runs and IpAddress was found
		Set oShell = CreateObject("WScript.Shell")
		filespec = wintemp_path &amp; "\" &amp; guid2 &amp; ".txt"
		Command2 = "cmd /c " &amp; chr(34) &amp; RacPath &amp; "\racadm.exe" &amp; Chr(34) &amp; Command2 &amp; " &gt; " &amp; filespec
		rc = oShell.run(Command2,0,true)	
		WScript.Sleep(5000)
		If rc &lt;&gt; 0 Then 
			Message = "PORT: RunRacUrl: OShellRun ERROR: " &amp; rc &amp; " for " &amp; Command2
			rc = DelFile(filespec)
			If rc &lt;&gt; 0 Then 
				Message = "Error! - DelFile " &amp; filespec 
			End If
			Exit Function
		Else
			Message = "PORT: RunRacUrl: Run " &amp; Command2
			' Infinite Loop Until file RAC2Guid is created
			Do While bFileExists(filespec) &lt;&gt; -1	
				WScript.Sleep(0)
			Loop

			Set fso = CreateObject("Scripting.FileSystemObject")
			Set oFile = fso.OpenTextFile(filespec, ForReading, False)
			Do While Not oFile.AtEndOfStream 
				strLine = Trim(oFile.ReadLine)
				If Instr(Lcase(strLine),"error") Then
					RacAgent = 0
					Message = "Error in Racadm Output for Port " &amp; strLine
					rc = DelFile(filespec)
					If rc &lt;&gt; 0 Then 
						Message = "Error! - DelFile " &amp; filespec 
					End If
					Exit Function
				End If
				If Instr(LCase(strLine),LCase("cfgRacTuneHttpsPort")) Then
					nPos = Instr(LCase(strLine), "=")
				    strRacPortNumber= Trim(strLine)
					If Instr(strRacPortNumber,"0x") Then
						strRacPortNumber= Mid(strRacPortNumber,nPos+1+2,16) '+2 to compensate 0x
						Message = "Hex httpsPort value from cfgRacTuning = " &amp; strRacPortNumber
						strRacPortNumber = HexToDec(strRacPortNumber)
						Message = "Hex to Dec convert result in = " &amp; strRacPortNumber
					Else
						strRacPortNumber= Mid(strRacPortNumber,nPos+1,16) 
						Message = "RAC5Plus decimal number = " &amp; strRacPortNumber
					End If
					blsRacGen4Plus = 1
				End If
			Loop

			oFile.close
			'Clean up the CLI Output : Delete racGuid2.txt
			rc = DelFile(filespec)
			If rc &lt;&gt; 0 Then 
				Message = "Error! - DelFile " &amp; filespec 
			End If
			Set filespec = Nothing
		End If 'PORT oShellCommand executed
		Set oShell = Nothing
	End If ' if blsRacInstalled = 1
	
	If blsRacGen4Plus = 1 Then
		strRACURL = "https://" &amp; strRacIpAddress &amp; ":" &amp; strRacPortNumber
	Else 
		strRACURL = "https://" &amp; strRacIpAddress
	End If

	RacAgent = blsRacInstalled
	RacUrl = strRACURL
	
	If Err &lt;&gt; 0 Then
		RunRacUrl = Err.Number
	End If
End Function

'*****************************************************************
'bFileExists
'Routine to determine if the OMSA Report file is created
'*****************************************************************
Function bFileExists(ByVal filespec1)
	Dim fso
	Set fso = CreateObject("Scripting.FileSystemObject")
	bFileExists = (fso.FileExists(filespec1))
	Set fso = Nothing
End Function

'*****************************************************************
' HexToDec
' Routine to Convert Hex Number to Decimal value
'*****************************************************************
Function HexToDec(ByVal Number)
	Dim lngResult,intIndex
	Dim strDigit, intDigit, intValue
	lngResult=0
	For intIndex=len(Number) to 1 step -1
		strDigit=Mid(Number,intIndex,1)
		intDigit=Instr("0123456789ABCDEF",ucase(strDigit))-1
		If intDigit&gt;=0 Then
			intValue=intDigit*(16^(len(Number)-intIndex))
			lngResult=lngResult+intValue
		Else
			lngResult=0
			int intIndex=0
		End If
	Next
	Number=Trim(lngResult)
	HexToDec = Number
End Function

'*****************************************************************
' Function MOMDebugLog 
' Add LogMessage Header - ScriptName and Time and Logging it.
'*****************************************************************
Function MOMDebugLog (ByVal strMessage)
	LogMessage = "(" &amp; SCRIPT_NAME &amp; ")" &amp; "-" &amp; "[" &amp; Now() &amp; "] --- " 
	LogMessage = LogMessage &amp; strMessage
'		ScriptContext.echo LogMessage
End Function

'*****************************************************************
'DeleteFile
'Routine to delete the OMSA Report file
'*****************************************************************
Function DelFile(ByVal filespec2)
	Dim fso, oFile
	If bFileExists(filespec2) Then
		Set fso = CreateObject("Scripting.FileSystemObject")
		fso.DeleteFile filespec2, True
		Set fso = Nothing
		Message = "OMREPORT Output File deleted - " &amp; filespec2
	End If
	If Err &lt;&gt; 0 Then
		DelFile = Err.Number
	End If
End Function

'*****************************************************************
'GetPathParameter - Common to RunRacUrl and ExecRacUrl
'Routine to get RACADM path and drive letter
'*****************************************************************
Function GetPathParameter(ByRef o_racpath, ByRef o_drive)
	Dim rac_path, drive_letter
	rc = GetRACADMPath(rac_path)
	If rc &lt;&gt; 0 Then
		Message = "GetPathParameter:GetRACADMPath Error - " &amp; rc
		RacExitFlag = 1
		Exit Function
	Else
		Message = "GetPathParameter:GetRACADMPath  - " &amp; rac_path
	End If
	
	rc = GetRACInstallRoot(drive_letter, rac_path)
	If rc &lt;&gt; 0 Then
		Message = "GetPathParameter:GetRACInstallRoot Error - " &amp; rc
		RacExitFlag = 1
		Exit Function
	Else
		Message = "GetPathParameter:GetRACInstallRoot  - " &amp; drive_letter
	End If
	
	If RegError = 1 Then
		Message = "RAC Hardware / Agent not installed on Server" 
		RacExitFlag = 1
		Exit Function
	End If

	o_racpath = rac_path
	o_drive = drive_letter

	If Err &lt;&gt; 0 Then
		GetPathParameter = Err.Number
	End If
End Function

'*****************************************************************
'GetTempFolderPath
'Routine to Get Win Temp Folder path
'*****************************************************************
Function GetTempFolderPath(ByRef WinTempFolder, ByVal drive_letter) 
	Dim FldrExistFlag, fso
	FldrExistFlag = False
	dim wshShell :  Set wshShell = Createobject("WScript.Shell")
	dim wshSysEnv : Set wshSysEnv = wshShell.Environment
	dim strSysTempFolder : strSysTempFolder = wshSysEnv("TEMP")
	dim wshPrcEnv : Set wshPrcEnv = wshShell.Environment("Process")
	strSysTempFolder = Replace(strSysTempFolder, "%SystemRoot%", wshPrcEnv("SYSTEMROOT"), 1, -1, vbTextCompare)
	WinTempFolder = strSysTempFolder

	Set fso = CreateObject("Scripting.FileSystemObject")
	If (fso.FolderExists(WinTempFolder)) Then
		FldrExistFlag = True
	Else
		FldrExistFlag = False
    End If
	If WinTempFolder = "" OR FldrExistFlag = False Then
		WinTempFolder = drive_letter 
	End If
	Message = "Current CLI output will be stored in Folder - " &amp; WinTempFolder

	Set wshShell = Nothing
	Set wshSysEnv = Nothing
	Set strSysTempFolder = Nothing
	Set wshPrcEnv = Nothing

	If Err &lt;&gt; 0 Then
		GetTempFolderPath = Err.Number
	End If
End Function

'*****************************************************************
'GetRACFileGUID
'Routine to generate 2 unique GUIDs for ip and port info files
'*****************************************************************
Function GetRACFileGUID(ByRef guid3, ByRef guid4)
	Dim TypeLib, NewGUID
	Set TypeLib = CreateObject("Scriptlet.TypeLib")
	NewGUID = TypeLib.Guid
	guid3 = (left(NewGUID, len(NewGUID)-2))
	Set TypeLib = Nothing

	Set TypeLib = CreateObject("Scriptlet.TypeLib")
	NewGUID = TypeLib.Guid
	guid4 = (left(NewGUID, len(NewGUID)-2))
	Set TypeLib = Nothing
End Function


													</ScriptBody>
                <TimeoutSeconds>300</TimeoutSeconds>
              </DataSource>
            </MemberModules>
            <Composition>
              <Node ID="DS" />
            </Composition>
          </Composite>
        </ModuleImplementation>
        <OutputType>System!System.Discovery.Data</OutputType>
      </DataSourceModuleType>
      <DataSourceModuleType ID="Dell.Connections.ServerServicesDiscovery" Accessibility="Internal" Batching="false">
        <Configuration>
          <xsd:element name="IntervalSeconds" type="xsd:integer" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
          <xsd:element name="Computer" type="xsd:string" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
        </Configuration>
        <OverrideableParameters>
          <OverrideableParameter ID="IntervalSeconds" Selector="$Config/IntervalSeconds$" ParameterType="int" />
        </OverrideableParameters>
        <ModuleImplementation Isolation="Any">
          <Composite>
            <MemberModules>
              <DataSource ID="DS" TypeID="Windows!Microsoft.Windows.TimedScript.DiscoveryProvider">
                <IntervalSeconds>$Config/IntervalSeconds$</IntervalSeconds>
                <SyncTime />
                <ScriptName>DellServerServicesDiscovery.vbs</ScriptName>
                <Arguments>$MPElement$ $Target/Id$ $Config/Computer$</Arguments>
                <ScriptBody>
'**********************************************************************************
' Script Name - Dell Server Services Discovery
' Author: Vignesh Pandian
'
' Description:
' Discover all OpenManage Windows services for a Dell server with instrumentation.
' 
' (c) Copyright Dell Inc. 2007 - All rights reserved           
'**********************************************************************************

Option Explicit
On Error Resume Next
Dim oArgs
Set oArgs = WScript.Arguments
if oArgs.Count &lt; 3 Then
   Wscript.Quit -1
End If

Dim SourceID, ManagedEntityId, TargetComputer
Dim ServiceFlag
Dim	DSMEventMgrFlag, DSMDataMgrFlag, DSMConnServiceFlag, DSMSharedServicesFlag		
Dim	DSMEventMgrDesc, DSMDataMgrDesc, DSMConnServiceDesc, DSMSharedServicesDesc
Dim	DSMEventMgrDispName, DSMDataMgrDispName, DSMConnServiceDispName, DSMSharedServicesDispName
Dim	DSMEventMgrStartMode, DSMDataMgrStartMode, DSMConnServiceStartMode, DSMSharedServicesStartMode
Dim LogMessage, ErrorMessage

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

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

ServiceFlag = getOMServices()
If ServiceFlag=1 Then
	set oInst = oDiscoveryData.CreateClassInstance("$MPElement[Name='Dell.Connections.ServerServices']$")
	call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", TargetComputer)
	call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.LogicalDevice']/DeviceID$", TargetComputer)
	call oInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "OMServices")	
	call oDiscoveryData.AddInstance(oInst)
	
'	Call oAPI.LogScriptEvent("VigServices2True",999,1,"Executed" + DSMEventMgrDispName + DSMDataMgrDispName + DSMConnServiceDispName + DSMSharedServicesDispName)
	
	If DSMEventMgrFlag = 1 Then
		set oInst = oDiscoveryData.CreateClassInstance("$MPElement[Name='Dell.Connections.ServerServices.DSMEventManager']$")
		call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", TargetComputer)
		call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.LogicalDevice']/DeviceID$", TargetComputer)
		call oInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", DSMEventMgrDispName)	
		call oInst.AddProperty("$MPElement[Name='Dell.Connections.ServerServices.DSMEventManager']/Description$", DSMEventMgrDesc)	
		call oInst.AddProperty("$MPElement[Name='Dell.Connections.ServerServices.DSMEventManager']/StartMode$", DSMEventMgrStartMode)			
		call oDiscoveryData.AddInstance(oInst)
	End If
	If DSMDataMgrFlag = 1 Then
		set oInst = oDiscoveryData.CreateClassInstance("$MPElement[Name='Dell.Connections.ServerServices.DSMDataManager']$")
		call oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", TargetComputer)
	