Dell Windows Server Detailed Processor Data Source Module

Dell.WindowsServer.Detailed.Proc.DataSource (DataSourceModuleType)

Element properties:

TypeDataSourceModuleType
IsolationAny
AccessibilityInternal
RunAsDefault
OutputTypeSystem.Discovery.Data

Member Modules:

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

Overrideable Parameters:

IDParameterTypeSelectorDisplay NameDescription
IntervalSecondsint$Config/IntervalSeconds$Interval SecondsInterval Seconds

Source Code:

<DataSourceModuleType ID="Dell.WindowsServer.Detailed.Proc.DataSource" Accessibility="Internal">
<Configuration>
<xsd:element name="IntervalSeconds" type="xsd:integer"/>
<xsd:element name="Computer" type="xsd:string"/>
</Configuration>
<OverrideableParameters>
<OverrideableParameter ID="IntervalSeconds" ParameterType="int" Selector="$Config/IntervalSeconds$"/>
</OverrideableParameters>
<ModuleImplementation>
<Composite>
<MemberModules>
<DataSource ID="DS" TypeID="Windows!Microsoft.Windows.TimedScript.DiscoveryProvider">
<IntervalSeconds>$Config/IntervalSeconds$</IntervalSeconds>
<SyncTime/>
<ScriptName>DellWinServerDetailedProcDiscovery.vbs</ScriptName>
<Arguments>$MPElement$ $Target/Id$ $Config/Computer$</Arguments>
<ScriptBody><Script>
Option Explicit
On Error Resume Next
SetLocale("en-us")

Dim oArgs
Dim logMessage

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, objDellConnection

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 IsEmpty(objDellConnection) Or (Err.Number &lt;&gt; 0) Then
Else
DiscoverProcUnit()
End If

' Submit the data
Call oAPI.Return(oDiscoveryData)

Set oDiscoveryData = Nothing
Set oAPI = Nothing
Set objDellConnection = Nothing

'*************************************************************************
' Function : DiscoverProcUnit()
' Desc : To discover Processors instances using CIM
' Arguments : NA
'*************************************************************************
Function DiscoverProcUnit()
'Retrieving Proc Units
On Error resume next
Dim sQuery, colItems, objItemProc, a, family, maxClockSpeed

sQuery = "Select * from CIM_Processor"

Set colItems = GetObjectSet(objDellConnection, sQuery, "Name", "CIM_Processor")
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
family = GetStringValue(objItemProc.Family)
If (StrComp(family, "") &lt;&gt; 0) Then
If (StrComp(family, "1") = 0) Then
family = "Other"
ElseIf (StrComp(family, "2") = 0) Then
family = "Unknown"
ElseIf (StrComp(family, "3") = 0) Then
family = "8086"
ElseIf (StrComp(family, "4") = 0) Then
family = "80286"
ElseIf (StrComp(family, "5") = 0) Then
family = "80386"
ElseIf (StrComp(family, "6") = 0) Then
family = "80486"
ElseIf (StrComp(family, "7") = 0) Then
family = "8087"
ElseIf (StrComp(family, "8") = 0) Then
family = "80287"
ElseIf (StrComp(family, "9") = 0) Then
family = "80387"
ElseIf (StrComp(family, "10") = 0) Then
family = "80487"
ElseIf (StrComp(family, "11") = 0) Then
family = "Pentium(R) brand"
ElseIf (StrComp(family, "12") = 0) Then
family = "Pentium(R) Pro"
ElseIf (StrComp(family, "13") = 0) Then
family = "Pentium(R) II"
ElseIf (StrComp(family, "14") = 0) Then
family = "Pentium(R) Processor with MMX(TM) technology"
ElseIf (StrComp(family, "15") = 0) Then
family = "Celeron(TM)"
ElseIf (StrComp(family, "16") = 0) Then
family = "Pentium(R) II Xeon(TM)"
ElseIf (StrComp(family, "17") = 0) Then
family = "Pentium(R) III"
ElseIf (StrComp(family, "18") = 0) Then
family = "M1 Family"
ElseIf (StrComp(family, "19") = 0) Then
family = "M2 Family"
ElseIf (StrComp(family, "20") = 0) Then
family = "Intel(R) Celeron(R) M processor"
ElseIf (StrComp(family, "21") = 0) Then
family = "Intel(R) Pentium(R) 4 HT processor"
ElseIf (StrComp(family, "24") = 0) Then
family = "K5 Family"
ElseIf (StrComp(family, "25") = 0) Then
family = "K6 Family"
ElseIf (StrComp(family, "26") = 0) Then
family = "K6-2"
ElseIf (StrComp(family, "27") = 0) Then
family = "K6-3"
ElseIf (StrComp(family, "28") = 0) Then
family = "AMD Athlon(TM) Processor Family"
ElseIf (StrComp(family, "29") = 0) Then
family = "AMD(R) Duron(TM) Processor"
ElseIf (StrComp(family, "30") = 0) Then
family = "AMD29000 Family"
ElseIf (StrComp(family, "31") = 0) Then
family = "K6-2+"
ElseIf (StrComp(family, "32") = 0) Then
family = "Power PC Family"
ElseIf (StrComp(family, "33") = 0) Then
family = "Power PC 601"
ElseIf (StrComp(family, "34") = 0) Then
family = "Power PC 603"
ElseIf (StrComp(family, "35") = 0) Then
family = "Power PC 603+"
ElseIf (StrComp(family, "36") = 0) Then
family = "Power PC 604"
ElseIf (StrComp(family, "37") = 0) Then
family = "Power PC 620"
ElseIf (StrComp(family, "38") = 0) Then
family = "Power PC X704"
ElseIf (StrComp(family, "39") = 0) Then
family = "Power PC 750"

ElseIf (StrComp(family, "40") = 0) Then
family = "Intel Core Duo processor"
ElseIf (StrComp(family, "41") = 0) Then
family = "Intel Core Duo mobile processor"
ElseIf (StrComp(family, "42") = 0) Then
family = "Intel Core Solo mobile processor"
ElseIf (StrComp(family, "43") = 0) Then
family = "Intel Atom processor"

ElseIf (StrComp(family, "48") = 0) Then
family = "Alpha family"
ElseIf (StrComp(family, "49") = 0) Then
family = "Alpha 21064"
ElseIf (StrComp(family, "50") = 0) Then
family = "Alpha 21066"
ElseIf (StrComp(family, "51") = 0) Then
family = "Alpha 21164"
ElseIf (StrComp(family, "52") = 0) Then
family = "Alpha 21164PC"
ElseIf (StrComp(family, "53") = 0) Then
family = "Alpha 21164a"
ElseIf (StrComp(family, "54") = 0) Then
family = "Alpha 21264"
ElseIf (StrComp(family, "55") = 0) Then
family = "Alpha 21364"
ElseIf (StrComp(family, "56") = 0) Then
family = "AMD Turion(TM) II Ultra Dual-Core Mobile M Processor Family"
ElseIf (StrComp(family, "57") = 0) Then
family = "AMD Turion(TM) II Dual-Core Mobile M Processor Family"
ElseIf (StrComp(family, "58") = 0) Then
family = "AMD Athlon(TM) II Dual-Core Mobile M Processor Family"
ElseIf (StrComp(family, "59") = 0) Then
family = "AMD Opteron(TM) 6100 Series Processor"
ElseIf (StrComp(family, "60") = 0) Then
family = "AMD Opteron(TM) 4100 Series Processor"
ElseIf (StrComp(family, "61") = 0) Then
family = "AMD Opteron(TM) 6200 Series Processor"
ElseIf (StrComp(family, "62") = 0) Then
family = "AMD Opteron(TM) 4200 Series Processor"

ElseIf (StrComp(family, "64") = 0) Then
family = "MIPS Family"
ElseIf (StrComp(family, "65") = 0) Then
family = "MIPS R4000"
ElseIf (StrComp(family, "66") = 0) Then
family = "MIPS R4200"
ElseIf (StrComp(family, "67") = 0) Then
family = "MIPS R4400"
ElseIf (StrComp(family, "68") = 0) Then
family = "MIPS R4600"
ElseIf (StrComp(family, "69") = 0) Then
family = "MIPS R10000"
ElseIf (StrComp(family, "80") = 0) Then
family = "SPARC Family"
ElseIf (StrComp(family, "81") = 0) Then
family = "SuperSPARC"
ElseIf (StrComp(family, "82") = 0) Then
family = "microSPARC II"
ElseIf (StrComp(family, "83") = 0) Then
family = "microSPARC IIep"
ElseIf (StrComp(family, "84") = 0) Then
family = "UltraSPARC"
ElseIf (StrComp(family, "85") = 0) Then
family = "UltraSPARC II"
ElseIf (StrComp(family, "86") = 0) Then
family = "UltraSPARC IIi"
ElseIf (StrComp(family, "87") = 0) Then
family = "UltraSPARC III"
ElseIf (StrComp(family, "88") = 0) Then
family = "UltraSPARC IIIi"
ElseIf (StrComp(family, "96") = 0) Then
family = "68040"
ElseIf (StrComp(family, "97") = 0) Then
family = "68xxx Family"
ElseIf (StrComp(family, "98") = 0) Then
family = "68000"
ElseIf (StrComp(family, "99") = 0) Then
family = "68010"
ElseIf (StrComp(family, "100") = 0) Then
family = "68020"
ElseIf (StrComp(family, "101") = 0) Then
family = "68030"
ElseIf (StrComp(family, "112") = 0) Then
family = "Hobbit Family"
ElseIf (StrComp(family, "120") = 0) Then
family = "Crusoe(TM) 5000 Family"
ElseIf (StrComp(family, "121") = 0) Then
family = "Crusoe(TM) 3000 Family"
ElseIf (StrComp(family, "122") = 0) Then
family = "Efficeon(TM) 8000 Family"
ElseIf (StrComp(family, "128") = 0) Then
family = "Weitek"
ElseIf (StrComp(family, "130") = 0) Then
family = "Itanium(TM) Processor"
ElseIf (StrComp(family, "131") = 0) Then
family = "AMD Athlon(TM) 64 Processor Family"
ElseIf (StrComp(family, "132") = 0) Then
family = "AMD Opteron(TM) Processor Family"
ElseIf (StrComp(family, "133") = 0) Then
family = "AMD Sempron Processor Family"
ElseIf (StrComp(family, "134") = 0) Then
family = "AMD Turion 64 Mobile Technology"
ElseIf (StrComp(family, "135") = 0) Then
family = "Dual-Core AMD Opteron Processor Family"
ElseIf (StrComp(family, "136") = 0) Then
family = "AMD Athlon 64 X2 Dual-Core Processor Family"
ElseIf (StrComp(family, "137") = 0) Then
family = "AMD Turion(TM) 64 X2 Mobile Technology"
ElseIf (StrComp(family, "138") = 0) Then
family = "Quad-Core AMD Opteron(TM) Processor Family"
ElseIf (StrComp(family, "139") = 0) Then
family = "Third-Generation AMD Opteron(TM) Processor Family"
ElseIf (StrComp(family, "140") = 0) Then
family = "AMD Phenom(TM) FX Quad-Core processor family"
ElseIf (StrComp(family, "141") = 0) Then
family = "AMD Phenom(TM) X4 Quad-Core processor family"
ElseIf (StrComp(family, "142") = 0) Then
family = "AMD Phenom(TM) X2 Dual-Core processor family"
ElseIf (StrComp(family, "143") = 0) Then
family = "AMD Athlon(TM) X2 Dual-Core processor family"


ElseIf (StrComp(family, "144") = 0) Then
family = "PA-RISC Family"
ElseIf (StrComp(family, "145") = 0) Then
family = "PA-RISC 8500"
ElseIf (StrComp(family, "146") = 0) Then
family = "PA-RISC 8000"
ElseIf (StrComp(family, "147") = 0) Then
family = "PA-RISC 7300LC"
ElseIf (StrComp(family, "148") = 0) Then
family = "PA-RISC 7200"
ElseIf (StrComp(family, "149") = 0) Then
family = "PA-RISC 7100LC"
ElseIf (StrComp(family, "150") = 0) Then
family = "PA-RISC 7100"
ElseIf (StrComp(family, "160") = 0) Then
family = "V30 Family"

ElseIf (StrComp(family, "161") = 0) Then
family = "Quad-Core Intel Xeon processor 3200 Series"
ElseIf (StrComp(family, "162") = 0) Then
family = "Dual-Core Intel Xeon processor 3000 Series"
ElseIf (StrComp(family, "163") = 0) Then
family = "Quad-Core Intel Xeon processor 5300 Series"
ElseIf (StrComp(family, "164") = 0) Then
family = "Dual-Core Intel Xeon processor 5100 Series"
ElseIf (StrComp(family, "165") = 0) Then
family = "Dual-Core Intel Xeon processor 5000 Series"
ElseIf (StrComp(family, "166") = 0) Then
family = "Dual-Core Intel Xeon processor LV"
ElseIf (StrComp(family, "167") = 0) Then
family = "Dual-Core Intel Xeon processor ULV"
ElseIf (StrComp(family, "168") = 0) Then
family = "Dual-Core Intel Xeon processor 7100 Series"
ElseIf (StrComp(family, "169") = 0) Then
family = "Quad-Core Intel Xeon processor 5400 Series"
ElseIf (StrComp(family, "170") = 0) Then
family = "Quad-Core Intel Xeon processor"


ElseIf (StrComp(family, "171") = 0) Then
family = "Dual-Core Intel(R) Xeon processor 5200 Series"
ElseIf (StrComp(family, "172") = 0) Then
family = "Dual-Core Intel Xeon processor 7200 Series"
ElseIf (StrComp(family, "173") = 0) Then
family = "Dual-Core Intel Xeon processor 7300 Series"
ElseIf (StrComp(family, "174") = 0) Then
family = "Dual-Core Intel Xeon processor 7400 Series"
ElseIf (StrComp(family, "175") = 0) Then
family = "Multi-Core Intel Xeon processor 7400 Series"
ElseIf (StrComp(family, "176") = 0) Then
family = "Pentium(R) III Xeon(TM)"
ElseIf (StrComp(family, "177") = 0) Then
family = "Pentium(R) III Processor with Intel(R) SpeedStep(TM) Technology"
ElseIf (StrComp(family, "178") = 0) Then
family = "Pentium(R) 4"
ElseIf (StrComp(family, "179") = 0) Then
family = "Intel(R) Xeon(TM)"
ElseIf (StrComp(family, "180") = 0) Then
family = "AS400 Family"
ElseIf (StrComp(family, "181") = 0) Then
family = "Intel(R) Xeon(TM) Processor MP"
ElseIf (StrComp(family, "182") = 0) Then
family = "AMD Athlon(TM) XP Family"
ElseIf (StrComp(family, "183") = 0) Then
family = "AMD Athlon(TM) MP Family"
ElseIf (StrComp(family, "184") = 0) Then
family = "Intel(R) Itanium(R) 2"
ElseIf (StrComp(family, "185") = 0) Then
family = "Intel(R) Pentium(R) M Processor"
ElseIf (StrComp(family, "186") = 0) Then
family = "Intel(R) Celeron(R) D Processor"
ElseIf (StrComp(family, "187") = 0) Then
family = "Intel(R) Pentium(R) D Processor"
ElseIf (StrComp(family, "188") = 0) Then
family = "Intel(R) Pentium Extreme Edition processor"
ElseIf (StrComp(family, "189") = 0) Then
family = "Intel(R) Core(TM) Solo Processo"
ElseIf (StrComp(family, "190") = 0) Then
family = "K7"
ElseIf (StrComp(family, "191") = 0) Then
family = "Intel(R) Core(TM)2 Duo Processor"
ElseIf (StrComp(family, "192") = 0) Then
family = "Intel(R) Core(TM)2 Solo processor"
ElseIf (StrComp(family, "193") = 0) Then
family = "Intel(R) Core(TM)2 Extreme processor"
ElseIf (StrComp(family, "194") = 0) Then
family = "Intel(R) Core(TM) 2 Quad processor"
ElseIf (StrComp(family, "195") = 0) Then
family = "Intel(R) Core(TM) 2 Extreme mobile processor"
ElseIf (StrComp(family, "196") = 0) Then
family = "Intel(R) Core(TM) 2 Duo mobile processor"
ElseIf (StrComp(family, "197") = 0) Then
family = "Intel(R) Core(TM) 2 Solo mobile processor"
ElseIf (StrComp(family, "198") = 0) Then
family = "Intel(R) Core(TM) i7 processor"
ElseIf (StrComp(family, "199") = 0) Then
family = "Dual-Core Intel(R) Celeron(R) processor"
ElseIf (StrComp(family, "200") = 0) Then
family = "S/390 and zSeries Family"
ElseIf (StrComp(family, "201") = 0) Then
family = "ESA/390 G4"
ElseIf (StrComp(family, "202") = 0) Then
family = "ESA/390 G5"
ElseIf (StrComp(family, "203") = 0) Then
family = "ESA/390 G6"
ElseIf (StrComp(family, "204") = 0) Then
family = "z/Architecture base"
ElseIf (StrComp(family, "205") = 0) Then
family = "Intel(R) Core(TM) i5 processor"
ElseIf (StrComp(family, "206") = 0) Then
family = "Intel(R) Core(TM) i3 processor"
ElseIf (StrComp(family, "210") = 0) Then
family = "VIA C7(TM)-M Processor Family"
ElseIf (StrComp(family, "211") = 0) Then
family = "VIA C7(TM)-D Processor Family"
ElseIf (StrComp(family, "212") = 0) Then
family = "VIA C7(TM) Processor Family"
ElseIf (StrComp(family, "213") = 0) Then
family = "VIA Eden(TM) Processor Family"
ElseIf (StrComp(family, "214") = 0) Then
family = "Multi-Core Intel(R) Xeon(R) processor"
ElseIf (StrComp(family, "215") = 0) Then
family = "Dual-Core Intel(R) Xeon(R) processor 3xxx Series"
ElseIf (StrComp(family, "216") = 0) Then
family = "Quad-Core Intel(R) Xeon(R) processor 3xxx Series"
ElseIf (StrComp(family, "217") = 0) Then
family = "VIA Nano(TM) Processor Family"
ElseIf (StrComp(family, "218") = 0) Then
family = "Dual-Core Intel(R) Xeon(R) processor 5xxx Series"
ElseIf (StrComp(family, "219") = 0) Then
family = "Quad-Core Intel(R) Xeon(R) processor 5xxx Series"
ElseIf (StrComp(family, "221") = 0) Then
family = "Dual-Core Intel(R) Xeon(R) processor 7xxx Series"
ElseIf (StrComp(family, "222") = 0) Then
family = "Quad-Core Intel(R) Xeon(R) processor 7xxx Series"
ElseIf (StrComp(family, "223") = 0) Then
family = "Multi-Core Intel(R) Xeon(R) processor 7xxx Series"
ElseIf (StrComp(family, "224") = 0) Then
family = "Multi-Core Intel(R) Xeon(R) processor 3400 Series"
ElseIf (StrComp(family, "230") = 0) Then
family = "Embedded AMD Opteron(TM) Quad-Core Processor Family"
ElseIf (StrComp(family, "231") = 0) Then
family = "AMD Phenom(TM) Triple-Core Processor Family"
ElseIf (StrComp(family, "232") = 0) Then
family = "AMD Turion(TM) Ultra Dual-Core Mobile Processor Family"
ElseIf (StrComp(family, "233") = 0) Then
family = "AMD Turion(TM) Dual-Core Mobile Processor Family"
ElseIf (StrComp(family, "234") = 0) Then
family = "AMD Athlon(TM) Dual-Core Processor Family"
ElseIf (StrComp(family, "235") = 0) Then
family = "AMD Sempron(TM) SI Processor Family"
ElseIf (StrComp(family, "236") = 0) Then
family = "AMD Phenom(TM) II Processor Family"
ElseIf (StrComp(family, "237") = 0) Then
family = "AMD Athlon(TM) II Processor Family"
ElseIf (StrComp(family, "238") = 0) Then
family = "Six-Core AMD Opteron(TM) Processor Family"
ElseIf (StrComp(family, "239") = 0) Then
family = "AMD Sempron(TM) M Processor Family"

ElseIf (StrComp(family, "250") = 0) Then
family = "i860"
ElseIf (StrComp(family, "251") = 0) Then
family = "i960"
ElseIf (StrComp(family, "260") = 0) Then
family = "SH-3"
ElseIf (StrComp(family, "261") = 0) Then
family = "SH-4"
ElseIf (StrComp(family, "280") = 0) Then
family = "ARM"
ElseIf (StrComp(family, "281") = 0) Then
family = "StrongARM"
ElseIf (StrComp(family, "300") = 0) Then
family = "6x86"
ElseIf (StrComp(family, "301") = 0) Then
family = "MediaGX"
ElseIf (StrComp(family, "302") = 0) Then
family = "MII"
ElseIf (StrComp(family, "320") = 0) Then
family = "WinChip"
ElseIf (StrComp(family, "350") = 0) Then
family = "DSP"
ElseIf (StrComp(family, "500") = 0) Then
family = "Video Processor"
End If
End If
maxClockSpeed = GetStringValue(objItemProc.MaxClockSpeed)
If (StrComp(MaxClockSpeed, "") &lt;&gt; 0) Then
maxClockSpeed = maxClockSpeed &amp; " MHz"
End If


Set oInst = oDiscoveryData.CreateClassInstance("$MPElement[Name='Dell.WindowsServer.Detailed.ProcUnit']$")
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.WindowsServer.Detailed.ProcUnit']/DeviceID$", objItemProc.DeviceID)
call oInst.AddProperty("$MPElement[Name='Dell.WindowsServer.Detailed.ProcUnit']/Family$", family)
call oInst.AddProperty("$MPElement[Name='Dell.WindowsServer.Detailed.ProcUnit']/MaxClockSpeed$", maxClockSpeed)
call oInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", objItemProc.Name)
call oDiscoveryData.AddInstance(oInst)
End If 'CR194360

End If
Next
End If

Set colItems = Nothing
End Function

Function GetStringValue(Byval input)
Dim stringValue

If IsNull(input) Then
stringValue = ""
Else
stringValue = input
End If

GetStringValue = stringValue
End Function

' *** Add double query fix

' Function to retrieve the object

Function GetObjectSet(ByRef objDellConnection, SelectQuery, Attribute, objName)
Dim retry, retryFlag
Dim objItem, arrURL, logMessage

On Error Resume Next
RetryFlag = False
For retry = 0 To 1
MOMDebugLog 1, "Retrying for " &amp; retry &amp; " time..."
Set GetObjectSet = objDellConnection.ExecQuery(SelectQuery)
LogErrorNumber(objName)
If (GetObjectSet is Nothing) Or (IsNull(GetObjectSet)) Then
logMessage = "INFO: Unable to retrieve " &amp; objName &amp; " Attributes"
MOMDebugLog 1, logMessage
WScript.Sleep(1000)
RetryFlag = True
Else
logMessage= "INFO: " &amp; objName &amp; " attributes retrieved successfully"
MOMDebugLog 1, logMessage
If Attribute = "__COUNT__" Then
Exit For
End If
For Each objItem in GetObjectSet
If LogErrorNumber(objName) = 0 Then
If Not objItem is nothing Then
Dim attrVal : attrVal = objItem.Properties_.Item(Attribute)
If IsNull(attrVal) Or Len(attrVal) &lt;= 0 Then
MOMDebugLog 1, Attribute &amp; " value is null or empty"
RetryFlag = True
WScript.Sleep(500)
Exit For
Else
Exit Function
End If
End If
End If
Next
If RetryFlag = False Then
Exit For
End If
End If
Next
End Function

Function LogErrorNumber(objName)
Dim logMessage
LogErrorNumber = Err.Number
If Err.Number &lt;&gt; 0 Then
Select Case Err.Number
Case -2147749904
logMessage = "CIM Object not found"
Case -2147749902
logMessage = "Dell CIM object not found"
Case -2147023169
logMessage = "RPC Failure occurred for namespace root-cimv2-dell"
Case -2147217389
logMessage = "Please Install/Re-Install ServerAdministrator on Dell Server!"
Case -2147217394 '0x8004100E
logMessage = "Not able to find Dell CIM object"
Case -2147217392 '0x8004100C
logMessage = "Not able to find the collection"
Case -2147749890
logMessage = "Object cannot be found"
Case -2147749892
logMessage = "Object cannot be found"
Case Else
logMessage = "Unable to retrieve " &amp; objName
logMessage = logMessage &amp; " Err Number:" &amp; Err.Number
logMessage = logMessage &amp; " Err Descr:" &amp; Err.Description
End Select
MOMDebugLog 1, "ERROR: " &amp; logMessage
End If
End Function
'*** Add MOMDebug
Const DEBUG_LOG_FILENAME = "DellWinServerDetailedProcDiscovery.log"
Dim loginited: loginited = False
Dim objLogTextFile, objLogFSO

Sub InitLog(strFileName)
' Begin Logheader
If logLevel &lt;&gt; 0 And loginited = False Then
Dim fileSize, strOutFile
Const ForAppending = 8
Const ForWriting = 2
Const MaxFileSize = 524288 'File Size is limited to 512 KB

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

Set objLogFSO = CreateObject("Scripting.FileSystemObject")
If Not objLogFSO.FolderExists(tFolder) Then
objLogFSO.CreateFolder(tFolder)
End If
strOutFile = tFolder &amp; "\"&amp; strFileName
WScript.Echo strOutFile
If Not objLogFSO.FileExists(strOutFile) Then
Set objLogTextFile = objLogFSO.CreateTextFile(strOutFile)
objLogTextFile.Close()
End If
fileSize = objLogFSO.GetFile(strOutFile).Size
If (fileSize &gt; MaxFileSize) Then
Set objLogTextFile = objLogFSO.OpentextFile(strOutFile, ForWriting, True)
Else
Set objLogTextFile = objLogFSO.OpentextFile(strOutFile, ForAppending, True)
End If
loginited = True
MOMDebugLog 1, "------------------------------------------------------"
MOMDebugLog 1, "INFO: Script - " &amp; strFileName &amp; ": Start()"
Err.Clear
End If
End Sub

Sub MOMDebugLog (ByVal debugLevel, ByVal Message)
'On Error Resume Next
If (debugLevel &gt; 0) and (debugLevel &lt;= logLevel) Then
If loginited = False Then
InitLog DEBUG_LOG_FILENAME
End If
objLogTextFile.WriteLine(Now() &amp; " ---- " &amp; Message)
Err.Clear
End If
End Sub

Sub CloseLog
' Begin Logheader
If loginited = True Then
objLogTextFile.Close
End If
End Sub

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