If Not InitializeWithParamerts(TargetComputer) Then Exit Sub
Dim oAPI, oDiscoveryData, oPropertyBag, oInstance
Set oAPI = CreateObject("MOM.ScriptAPI")
If Mode = "Discovery" Then
Set oDiscoveryData = oAPI.CreateDiscoveryData(SourceType, SourceId, ManagedEntityId)
Else
Set oPropertyBag = oAPI.CreatePropertyBag()
End If
' CAgentsVersionX86 (String / SOFTWARE)
Dim AgentsVersion
AgentsVersion = ""
On Error Resume Next
Registry.GetStringValue HKEY_LOCAL_MACHINE, CAgentsVersionX86A, CAgentsVersionX86B, AgentsVersion
If Err.Number <> 0 OR IsNull(AgentsVersion) Then
AgentsVersion = ""
End If
On Error Goto 0
' CAgentsVersion (Binary / SYSTEM)
If AgentsVersion = "" Then
Dim AgentsBinary
On Error Resume Next
Registry.GetBinaryValue HKEY_LOCAL_MACHINE, CAgentsVersionA, CAgentsVersionB, AgentsBinary
If Err.Number = 0 And NOT IsNull(AgentsBinary) Then
For i = 0 to UBound(AgentsBinary)
If AgentsBinary(i) = 0 Then Exit For
AgentsVersion = AgentsVersion & String(1, AgentsBinary(i))
Next
Else
AgentsVersion = ""
End If
On Error Goto 0
End If
Dim index, mibStatusArray, maxIndex
Dim mibstatus, mibPacket, mibHealth
Dim failedComponent
mibStatusArray = array(0, 0, 0, 0)
On Error Resume Next
Registry.GetBinaryValue HKEY_LOCAL_MACHINE, CMIBArrayA, CMIBArrayB, mibStatusArray
If Err.Number <> 0 OR IsNull(mibStatusArray) Then
mibStatusArray = array(0, 0, 0, 0)
End If
On Error Goto 0
maxIndex = (UBound(mibStatusArray) + 1)/4
If maxIndex >= 7 Then
If mibStatusArray(6 * 4) = 1 Then
mibHealth = mibStatusArray((6 * 4) + 1)
Else
mibHealth = 2 ' Green - don't care
End If
End If
If maxIndex >= 2 Then
' Base Hardware MIB=1
If mibStatusArray(1 * 4) = 1 Then
If mibStatusArray((1 * 4) + 1) > mibHealth Then mibHealth = mibStatusArray((1 * 4) + 1)
End If
End If
If maxIndex >= 16 Then
' Cluster MIB=15
If mibStatusArray(15 * 4) = 1 Then
If mibStatusArray((15 * 4) + 1) > mibHealth Then mibHealth = mibStatusArray((15 * 4) + 1)
End If
End If
' CPU CCpuReg
mibStatus = 0
failedComponent = "N/A"
For index = 0 to 1023
mibPacket = 0
On Error Resume Next
Registry.GetBinaryValue HKEY_LOCAL_MACHINE, CCpuRegA, CCpuRegB & ThreeDigit(index), mibPacket
If Err.Number <> 0 OR IsNull(mibPacket) Then Exit For
If AgentsVersion = "7.51.0.0" OR AgentsVersion = "7.50.0.0" OR AgentsVersion = "7.41.0.0" Then
If mibStatus < mibPacket(256 + 24) Then
mibStatus = mibPacket(256 + 24)
If mibStatus > 2 Then failedComponent = "Processor " & index
End If
Else
If mibStatus < mibPacket(256 + 16) Then
mibStatus = mibPacket(256 + 16)
If mibStatus > 2 Then failedComponent = "Processor " & index
End If
End If
On Error Goto 0
Next
If mibStatus <> 0 Then
If Mode = "Discovery" Then
Set oInstance = oDiscoveryData.CreateClassInstance("$MPElement[Name='HewlettPackard.Servers.ProLiant.SNMP.HPProLiantSNMPProcessors']$")
Call oInstance.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", PrincipalName)
Call oInstance.AddProperty("$MPElement[Name='HPSC!HewlettPackard.Servers.HPServer']/NetworkName$", TargetComputer)
Call oInstance.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", HPHealthCollectionList(CCPU))
Call oInstance.AddProperty("$MPElement[Name='HPSC!HewlettPackard.Servers.HPHealthCollection']/ServerName$", TargetComputer)
Call oDiscoveryData.AddInstance(oInstance)
Set oInstance = Nothing
Else
Call oPropertyBag.AddValue(HPHealthCollectionStateList(CCPU) & ".HealthState", GetStateForHPHealthCollection(mibStatus))
If IsInFailedState(mibStatus) Then Call oPropertyBag.AddValue(HPHealthCollectionStateList(CCPU) & ".FailedComponent", failedComponent)
End If
End If
' Fans CThermalReg
mibPacket = 0
On Error Resume Next
Registry.GetBinaryValue HKEY_LOCAL_MACHINE, CThermalRegA, CThermalRegB, mibPacket
If Err.Number <> 0 OR IsNull(mibPacket) Then
mibStatus = 0
failedComponent = "N/A"
Else
mibStatus = mibPacket(3) ' System Fans
If mibStatus > 2 Then failedComponent = "System Fan(s)"
If mibStatus < mibPacket(4) Then
mibStatus = mibPacket(4) ' Cpu Fans
If mibStatus > 2 Then failedComponent = "Cpu Fan(s)"
End If
End If
On Error Goto 0
If mibStatus <> 0 Then
If Mode = "Discovery" Then
Set oInstance = oDiscoveryData.CreateClassInstance("$MPElement[Name='HewlettPackard.Servers.ProLiant.SNMP.HPProLiantSNMPCooling']$")
Call oInstance.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", PrincipalName)
Call oInstance.AddProperty("$MPElement[Name='HPSC!HewlettPackard.Servers.HPServer']/NetworkName$", TargetComputer)
Call oInstance.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", HPHealthCollectionList(CFans))
Call oInstance.AddProperty("$MPElement[Name='HPSC!HewlettPackard.Servers.HPHealthCollection']/ServerName$", TargetComputer)
Call oDiscoveryData.AddInstance(oInstance)
Set oInstance = Nothing
Else
Call oPropertyBag.AddValue(HPHealthCollectionStateList(CFans) & ".HealthState", GetStateForHPHealthCollection(mibStatus))
If IsInFailedState(mibStatus) Then Call oPropertyBag.AddValue(HPHealthCollectionStateList(CFans) & ".FailedComponent", failedComponent)
End If
If mibStatus >= mibHealth Then mibHealth = 2 ' Green - don't care
End If
' AMPMemory CMemory2BoardReg / CMemory2ModuleReg
Dim memCondition
mibStatus = 0
failedComponent = "N/A"
For index = 0 to 1023
mibPacket = 0
On Error Resume Next
Registry.GetBinaryValue HKEY_LOCAL_MACHINE, CMemory2BoardRegA, CMemory2BoardRegB & ThreeDigit(index), mibPacket
If Err.Number <> 0 OR IsNull(mibPacket) Then Exit For
If mibStatus < mibPacket(40) Then
mibStatus = mibPacket(40)
If mibStatus > 2 Then failedComponent = "Memory Board " & index
End If
On Error Goto 0
Next
For index = 0 to 1023
mibPacket = 0
On Error Resume Next
Registry.GetBinaryValue HKEY_LOCAL_MACHINE, CMemory2ModuleRegA, CMemory2ModuleRegB & ThreeDigit(index), mibPacket
If Err.Number <> 0 OR IsNull(mibPacket) Then Exit For
If mibPacket(811) > 2 AND mibPacket(811) < 7 Then
memCondition = 2
ElseIf mibPacket(811) > 6 AND mibPacket(811) < 12 Then
memCondition = 3
Else
memCondition = 0
End If
If mibStatus < memCondition Then
mibStatus = memCondition
If mibStatus > 2 Then failedComponent = "Memory Module " & index
End If
On Error Goto 0
Next
If mibStatus = 0 Then
' Memory CMemoryBoardReg / CMemoryModuleReg
mibStatus = 0
failedComponent = "N/A"
For index = 0 to 1023
mibPacket = 0
On Error Resume Next
Registry.GetBinaryValue HKEY_LOCAL_MACHINE, CMemoryBoardRegA, CMemoryBoardRegB & ThreeDigit(index), mibPacket
If Err.Number <> 0 OR IsNull(mibPacket) Then Exit For
If mibStatus < mibPacket(28) Then
mibStatus = mibPacket(28)
If mibStatus > 2 Then failedComponent = "Memory Board " & index
End If
On Error Goto 0
Next
For index = 0 to 1023
mibPacket = 0
On Error Resume Next
Registry.GetBinaryValue HKEY_LOCAL_MACHINE, CMemoryModuleRegA, CMemoryModuleRegB & ThreeDigit(index), mibPacket
If Err.Number <> 0 OR IsNull(mibPacket) Then Exit For
If mibPacket(8) > 2 AND mibPacket(8) < 7 Then
memCondition = 2
ElseIf mibPacket(8) > 6 AND mibPacket(8) < 12 Then
memCondition = 3
Else
memCondition = 0
End If
If mibStatus < memCondition Then
mibStatus = memCondition
If mibStatus > 2 Then failedComponent = "Memory Module " & index
End If
On Error Goto 0
Next
End If
If mibStatus <> 0 Then
If Mode = "Discovery" Then
Set oInstance = oDiscoveryData.CreateClassInstance("$MPElement[Name='HewlettPackard.Servers.ProLiant.SNMP.HPProLiantSNMPMemory']$")
Call oInstance.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", PrincipalName)
Call oInstance.AddProperty("$MPElement[Name='HPSC!HewlettPackard.Servers.HPServer']/NetworkName$", TargetComputer)
Call oInstance.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", HPHealthCollectionList(CMemory))
Call oInstance.AddProperty("$MPElement[Name='HPSC!HewlettPackard.Servers.HPHealthCollection']/ServerName$", TargetComputer)
Call oDiscoveryData.AddInstance(oInstance)
Set oInstance = Nothing
Else
Call oPropertyBag.AddValue(HPHealthCollectionStateList(CMemory) & ".HealthState", GetStateForHPHealthCollection(mibStatus))
If IsInFailedState(mibStatus) Then Call oPropertyBag.AddValue(HPHealthCollectionStateList(CMemory) & ".FailedComponent", failedComponent)
End If
If mibStatus >= mibHealth Then mibHealth = 2 ' Green - don't care
End If
If maxIndex >= 19 Then
' NIC MIB=18
If mibStatusArray(18 * 4) = 1 Then
failedComponent = "N/A"
If Mode = "Discovery" Then
Set oInstance = oDiscoveryData.CreateClassInstance("$MPElement[Name='HewlettPackard.Servers.ProLiant.SNMP.HPProLiantSNMPServerNetworks']$")
Call oInstance.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", PrincipalName)
Call oInstance.AddProperty("$MPElement[Name='HPSC!HewlettPackard.Servers.HPServer']/NetworkName$", TargetComputer)
Call oInstance.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", HPHealthCollectionList(CNIC))
Call oInstance.AddProperty("$MPElement[Name='HPSC!HewlettPackard.Servers.HPHealthCollection']/ServerName$", TargetComputer)
Call oDiscoveryData.AddInstance(oInstance)
Set oInstance = Nothing
Else
Call oPropertyBag.AddValue(HPHealthCollectionStateList(CNIC) & ".HealthState", GetStateForHPHealthCollection(mibStatusArray((18 * 4) + 1)))
If IsInFailedState(mibStatusArray((18 * 4) + 1)) Then Call oPropertyBag.AddValue(HPHealthCollectionStateList(CNIC) & ".FailedComponent", failedComponent)
End If
End If
End If
' Power CPowerReg
mibStatus = 0
failedComponent = "N/A"
For index = 0 to 31
mibPacket = 0
On Error Resume Next
Registry.GetBinaryValue HKEY_LOCAL_MACHINE, CPowerRegA, CPowerRegB & ThreeDigit(index), mibPacket
If Err.Number <> 0 OR IsNull(mibPacket) Then Exit For
If mibStatus < mibPacket(4) Then
mibStatus = mibPacket(4)
If mibStatus > 2 Then failedComponent = "Power Supply " & index
End If
On Error Goto 0
Next
If mibStatus <> 0 Then
If mibStatus > 2 Then
mibPacket = 0
On Error Resume Next
Registry.GetBinaryValue HKEY_LOCAL_MACHINE, CPowerRegAltA, CPowerRegAltB, mibPacket
If Err.Number = 0 And NOT IsNull(mibPacket) Then
mibStatus = mibPacket(0)
End If
On Error Goto 0
End If
If Mode = "Discovery" Then
Set oInstance = oDiscoveryData.CreateClassInstance("$MPElement[Name='HewlettPackard.Servers.ProLiant.SNMP.HPProLiantSNMPPowerSupplies']$")
Call oInstance.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", PrincipalName)
Call oInstance.AddProperty("$MPElement[Name='HPSC!HewlettPackard.Servers.HPServer']/NetworkName$", TargetComputer)
Call oInstance.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", HPHealthCollectionList(CPower))
Call oInstance.AddProperty("$MPElement[Name='HPSC!HewlettPackard.Servers.HPHealthCollection']/ServerName$", TargetComputer)
Call oDiscoveryData.AddInstance(oInstance)
Set oInstance = Nothing
Else
Call oPropertyBag.AddValue(HPHealthCollectionStateList(CPower) & ".HealthState", GetStateForHPHealthCollection(mibStatus))
If IsInFailedState(mibStatus) Then Call oPropertyBag.AddValue(HPHealthCollectionStateList(CPower) & ".FailedComponent", failedComponent)
End If
If mibStatus >= mibHealth Then mibHealth = 2 ' Green - don't care
End If
' Realtime Monitorr CRealTimeMonitorReg
mibStatus = 0
failedComponent = "N/A"
mibPacket = 0
On Error Resume Next
Dim cprCondition
Registry.GetBinaryValue HKEY_LOCAL_MACHINE, CRealtimeMonitorRegA, CRealtimeMonitorRegB, mibPacket
If Err.Number = 0 AND NOT IsNull(mibPacket) Then
Dim mibS
mibS = 0
If mibPacket(0) = 3 Then
mibS = 3
ElseIf mibPacket(0) = 4 Then
mibS = 2
End If
If mibStatus < mibS Then
mibStatus = mibS
If mibStatus > 2 Then failedComponent = "Auto Server Recovery " & index
End If
'Set the initial state to healthy
cprCondition = 2
'Read the cprCondition if ASR status is enabled
If mibStatus = 2 Then
cprCondition = mibPacket(176)
End If
If Mode = "Discovery" Then
Set oInstance = oDiscoveryData.CreateClassInstance("$MPElement[Name='HewlettPackard.Servers.ProLiant.SNMP.HPProLiantSNMPRealtimeMonitors']$")
Call oInstance.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", PrincipalName)
Call oInstance.AddProperty("$MPElement[Name='HPSC!HewlettPackard.Servers.HPServer']/NetworkName$", TargetComputer)
Call oInstance.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", HPHealthCollectionList(CRealtimeMonitor))
Call oInstance.AddProperty("$MPElement[Name='HPSC!HewlettPackard.Servers.HPHealthCollection']/ServerName$", TargetComputer)
Call oDiscoveryData.AddInstance(oInstance)
Set oInstance = Nothing
Else
Call oPropertyBag.AddValue(HPHealthCollectionStateList(CRealtimeMonitor) & ".HealthState", GetStateForHPHealthCollection(cprCondition))
If IsInFailedState(cprCondition) Then Call oPropertyBag.AddValue(HPHealthCollectionStateList(CRealtimeMonitor) & ".FailedComponent", failedComponent)
End If
If mibStatus >= mibHealth Then mibHealth = 2 ' Green - don't care
End If
On Error Goto 0
If maxIndex >= 10 Then
' Remote Management Processor MIB=9
If mibStatusArray(9 * 4) = 1 Then
failedComponent = "N/A"
If Mode = "Discovery" Then
Set oInstance = oDiscoveryData.CreateClassInstance("$MPElement[Name='HewlettPackard.Servers.ProLiant.SNMP.HPProLiantSNMPManagementProcessors']$")
Call oInstance.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", PrincipalName)
Call oInstance.AddProperty("$MPElement[Name='HPSC!HewlettPackard.Servers.HPServer']/NetworkName$", TargetComputer)
Call oInstance.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", HPHealthCollectionList(CRemoteManagementProcessor))
Call oInstance.AddProperty("$MPElement[Name='HPSC!HewlettPackard.Servers.HPHealthCollection']/ServerName$", TargetComputer)
Call oDiscoveryData.AddInstance(oInstance)
Set oInstance = Nothing
Else
Call oPropertyBag.AddValue(HPHealthCollectionStateList(CRemoteManagementProcessor) & ".HealthState", GetStateForHPHealthCollection(mibStatusArray((9 * 4) + 1)))
If IsInFailedState(mibStatusArray((9 * 4) + 1)) Then Call oPropertyBag.AddValue(HPHealthCollectionStateList(CRemoteManagementProcessor) & ".FailedComponent", failedComponent)
End If
End If
End If
If maxIndex >= 17 Then
' Server Storage MIB=3,5,7,8,14,16
If mibStatusArray(3 * 4) = 1 OR mibStatusArray(5 * 4) = 1 OR mibStatusArray(7 * 4) = 1 OR _
mibStatusArray(8 * 4) = 1 OR mibStatusArray(14 * 4) = 1 OR mibStatusArray(16 * 4) = 1 Then
mibstatus = 0
If mibStatusArray(3 * 4) = 1 AND mibstatus < mibStatusArray((3 * 4) + 1) Then mibstatus = mibStatusArray((3 * 4) + 1)
If mibStatusArray(5 * 4) = 1 AND mibstatus < mibStatusArray((5 * 4) + 1) Then mibstatus = mibStatusArray((5 * 4) + 1)
If mibStatusArray(7 * 4) = 1 AND mibstatus < mibStatusArray((7 * 4) + 1) Then mibstatus = mibStatusArray((7 * 4) + 1)
If mibStatusArray(8 * 4) = 1 AND mibstatus < mibStatusArray((8 * 4) + 1) Then mibstatus = mibStatusArray((8 * 4) + 1)
If mibStatusArray(14 * 4) = 1 AND mibstatus < mibStatusArray((14 * 4) + 1) Then mibstatus = mibStatusArray((14 * 4) + 1)
If mibStatusArray(16 * 4) = 1 AND mibstatus < mibStatusArray((16 * 4) + 1) Then mibstatus = mibStatusArray((16 * 4) + 1)
failedComponent = "N/A"
If Mode = "Discovery" Then
Set oInstance = oDiscoveryData.CreateClassInstance("$MPElement[Name='HewlettPackard.Servers.ProLiant.SNMP.HPProLiantSNMPServerStorage']$")
Call oInstance.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", PrincipalName)
Call oInstance.AddProperty("$MPElement[Name='HPSC!HewlettPackard.Servers.HPServer']/NetworkName$", TargetComputer)
Call oInstance.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", HPHealthCollectionList(CServerStorage))
Call oInstance.AddProperty("$MPElement[Name='HPSC!HewlettPackard.Servers.HPHealthCollection']/ServerName$", TargetComputer)
Call oDiscoveryData.AddInstance(oInstance)
Set oInstance = Nothing
Else
Call oPropertyBag.AddValue(HPHealthCollectionStateList(CServerStorage) & ".HealthState", GetStateForHPHealthCollection(mibstatus))
If IsInFailedState(mibStatus) Then Call oPropertyBag.AddValue(HPHealthCollectionStateList(CServerStorage) & ".FailedComponent", failedComponent)
End If
End If
End If
' Temperature CThermalReg
mibPacket = 0
On Error Resume Next
Registry.GetBinaryValue HKEY_LOCAL_MACHINE, CThermalRegA, CThermalRegB, mibPacket
If Err.Number <> 0 OR IsNull(mibPacket) Then
mibStatus = 0
Else
mibStatus = mibPacket(2)
End If
On Error Goto 0
If mibStatus <> 0 Then
failedComponent = "N/A"
If Mode = "Discovery" Then
Set oInstance = oDiscoveryData.CreateClassInstance("$MPElement[Name='HewlettPackard.Servers.ProLiant.SNMP.HPProLiantSNMPTemperatureSensors']$")
Call oInstance.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", PrincipalName)
Call oInstance.AddProperty("$MPElement[Name='HPSC!HewlettPackard.Servers.HPServer']/NetworkName$", TargetComputer)
Call oInstance.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", HPHealthCollectionList(CTemperature))
Call oInstance.AddProperty("$MPElement[Name='HPSC!HewlettPackard.Servers.HPHealthCollection']/ServerName$", TargetComputer)
Call oDiscoveryData.AddInstance(oInstance)
Set oInstance = Nothing
Else
Call oPropertyBag.AddValue(HPHealthCollectionStateList(CTemperature) & ".HealthState", GetStateForHPHealthCollection(mibstatus))
If IsInFailedState(mibStatus) Then Call oPropertyBag.AddValue(HPHealthCollectionStateList(CTemperature) & ".FailedComponent", failedComponent)
End If
If mibStatus >= mibHealth Then mibHealth = 2 ' Green - don't care
End If
If maxIndex >= 13 Then
' UPS MIB=12
If mibStatusArray(12 * 4) = 1 Then
failedComponent = "N/A"
If Mode = "Discovery" Then
Set oInstance = oDiscoveryData.CreateClassInstance("$MPElement[Name='HewlettPackard.Servers.ProLiant.SNMP.HPProLiantSNMPUPS']$")
Call oInstance.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", PrincipalName)
Call oInstance.AddProperty("$MPElement[Name='HPSC!HewlettPackard.Servers.HPServer']/NetworkName$", TargetComputer)
Call oInstance.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", HPHealthCollectionList(CUPS))
Call oInstance.AddProperty("$MPElement[Name='HPSC!HewlettPackard.Servers.HPHealthCollection']/ServerName$", TargetComputer)
Call oDiscoveryData.AddInstance(oInstance)
Set oInstance = Nothing
Else
Call oPropertyBag.AddValue(HPHealthCollectionStateList(CUPS) & ".HealthState", GetStateForHPHealthCollection(mibStatusArray((12 * 4) + 1)))
If IsInFailedState(mibStatusArray((12 * 4) + 1)) Then Call oPropertyBag.AddValue(HPHealthCollectionStateList(CUPS) & ".FailedComponent", failedComponent)
End If
End If
End If
' IML Logs CLogs
mibPacket = 0
On Error Resume Next
Registry.GetBinaryValue HKEY_LOCAL_MACHINE, CLogsRegA, CLogsRegB, mibPacket
If Err.Number <> 0 OR IsNull(mibPacket) Then
mibStatus = 0
Else
mibStatus = 0
If mibPacket(284) = 3 Then mibStatus = mibPacket(288)
End If
On Error Goto 0
If mibStatus <> 0 Then
If Mode = "Discovery" Then
Set oInstance = oDiscoveryData.CreateClassInstance("$MPElement[Name='HewlettPackard.Servers.ProLiant.SNMP.HPProLiantSNMPLogs']$")
Call oInstance.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", PrincipalName)
Call oInstance.AddProperty("$MPElement[Name='HPSC!HewlettPackard.Servers.HPServer']/NetworkName$", TargetComputer)
Call oInstance.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", HPHealthCollectionList(CLogs))
Call oInstance.AddProperty("$MPElement[Name='HPSC!HewlettPackard.Servers.HPHealthCollection']/ServerName$", TargetComputer)
Call oDiscoveryData.AddInstance(oInstance)
Set oInstance = Nothing
Else
Call oPropertyBag.AddValue(HPHealthCollectionStateList(CLogs) & ".HealthState", GetStateForHPHealthCollection(mibstatus))
If IsInFailedState(mibStatus) Then Call oPropertyBag.AddValue(HPHealthCollectionStateList(CLogs) & ".FailedComponent", "Integrated Management Log")
End If
If mibStatus >= mibHealth Then mibHealth = 2 ' Green - don't care
End If
If maxIndex >= 23 Then
' Other MIB=2,4,10,11,13,17,19,20,21, 22 [plus 6/Health minus CPower&CFans&CTemperature&CLog]
failedComponent = "N/A"
mibstatus = 0
If mibStatusArray(2 * 4) = 1 AND mibstatus < mibStatusArray((2 * 4) + 1) Then mibstatus = mibStatusArray((2 * 4) + 1) : failedComponent = "Base System"
If mibStatusArray(4 * 4) = 1 AND mibstatus < mibStatusArray((4 * 4) + 1) Then mibstatus = mibStatusArray((4 * 4) + 1)
If mibStatusArray(10 * 4) = 1 AND mibstatus < mibStatusArray((10 * 4) + 1) Then mibstatus = mibStatusArray((10 * 4) + 1) : failedComponent = "Threshold Management"
If mibStatusArray(11 * 4) = 1 AND mibstatus < mibStatusArray((11 * 4) + 1) Then mibstatus = mibStatusArray((11 * 4) + 1) : failedComponent = "Operating System"
If mibStatusArray(13 * 4) = 1 AND mibstatus < mibStatusArray((13 * 4) + 1) Then mibstatus = mibStatusArray((13 * 4) + 1)
If mibStatusArray(17 * 4) = 1 AND mibstatus < mibStatusArray((17 * 4) + 1) Then mibstatus = mibStatusArray((17 * 4) + 1) : failedComponent = "External Non HP Devices"
If mibStatusArray(19 * 4) = 1 AND mibstatus < mibStatusArray((19 * 4) + 1) Then mibstatus = mibStatusArray((19 * 4) + 1) : failedComponent = "Windows"
If mibStatusArray(20 * 4) = 1 AND mibstatus < mibStatusArray((20 * 4) + 1) Then mibstatus = mibStatusArray((20 * 4) + 1)
If mibStatusArray(21 * 4) = 1 AND mibstatus < mibStatusArray((21 * 4) + 1) Then mibstatus = mibStatusArray((21 * 4) + 1) : failedComponent = "Appliance"
If mibStatusArray(22 * 4) = 1 AND mibstatus < mibStatusArray((22 * 4) + 1) Then mibHealth = mibStatusArray((22 * 4) + 1) : failedComponent = "Enclosure"
If mibHealth > mibstatus Then mibstatus = mibHealth : failedComponent = "Other System Health (UID, POST)"
If Mode = "Discovery" Then
Set oInstance = oDiscoveryData.CreateClassInstance("$MPElement[Name='HewlettPackard.Servers.ProLiant.SNMP.HPProLiantSNMPServerOthers']$")
Call oInstance.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", PrincipalName)
Call oInstance.AddProperty("$MPElement[Name='HPSC!HewlettPackard.Servers.HPServer']/NetworkName$", TargetComputer)
Call oInstance.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", HPHealthCollectionList(COther))
Call oInstance.AddProperty("$MPElement[Name='HPSC!HewlettPackard.Servers.HPHealthCollection']/ServerName$", TargetComputer)
Call oDiscoveryData.AddInstance(oInstance)
Set oInstance = Nothing
Else
Call oPropertyBag.AddValue(HPHealthCollectionStateList(COther) & ".HealthState", GetStateForHPHealthCollection(mibStatus))
If IsInFailedState(mibStatus) Then Call oPropertyBag.AddValue(HPHealthCollectionStateList(COther) & ".FailedComponent", failedComponent)
End If
End If
' Submit the data
If Mode = "Discovery" Then
Call oAPI.Return(oDiscoveryData)
Else
Call oAPI.Return(oPropertyBag)
End If
Set oDiscoveryData = Nothing
Set oPropertyBag = Nothing
Set oAPI = Nothing
End Sub
Function GetStateForHPHealthCollection(mib)
GetStateForHPHealthCollection = GetState(GetStateIndex(mib))
End Function
Function GetStateIndex(mib)
Select Case mib
Case 1 GetStateIndex = STATE_NONE
Case 2 GetStateIndex = STATE_SUCCESS
Case 3 GetStateIndex = STATE_WARNING
Case 4 GetStateIndex = STATE_ERROR
Case 5 GetStateIndex = STATE_ERROR
Case Else GetStateIndex = STATE_NONE
End Select
End Function
Function GetState(stateLevel)
Select Case stateLevel
Case STATE_SUCCESS GetState = "HealthSuccess"
Case STATE_WARNING GetState = "HealthWarning"
Case STATE_ERROR GetState = "HealthError"
Case Else GetState = "HealthUnknown"
End Select
End Function
Function IsInFailedState(mib)
IsInFailedState = false
If GetStateIndex(mib) = STATE_WARNING OR GetStateIndex(mib) = STATE_ERROR Then IsInFailedState = true
End Function
Function ThrowScriptError(sMessage, oErr)
' ThrowScriptError :: Creates an event and sends it back to the mom server
'Call oAPI.LogScriptEvent("Hewlett-PackardProLiantSNMPHealthDiscoveryScript", 1001, 1, sMessage)
Call oAPI.LogScriptEvent("Hewlett-PackardProLiantSNMPHealthMonitorScript", 1002, 1, sMessage)
WScript.Quit(0)
End Function
Function ConvertToString(sString)
If IsNull(sString) Then
ConvertToString = ""
Exit Function
End If
ConvertToString = CStr(sString)
End Function
Function ThreeDigit(iIndex)
Dim result
result = CStr(iIndex)
If Len(result) = 1 Then result = "00" & result
If Len(result) = 2 Then result = "0" & result
If Len(result) > 3 Then result = "000"
ThreeDigit = result
End Function
Function InitializeWithParamerts(TargetComputer)
InitializeWithParamerts = True
Set Sh = CreateObject("WScript.Shell")
' Setting up remote registry access
On Error Resume Next
Set Registry = GetObject("winmgmts://" & TargetComputer & "/root/default:StdRegProv")
If IsEmpty(Registry) Then
ThrowScriptError "Unable to connect WMI: /root/default:StdRegProv. Check to see if the WMI service is enabled and running, and ensure this WMI namespace exists on " & TargetComputer & ".", Err
InitializeWithParamerts = False
End If
On Error Goto 0
End Function