Set oAPI = CreateObject("MOM.ScriptAPI")
Set oDiscoveryData = oAPI.CreateDiscoveryData(0,SourceID,ManagedEntityID)
'Check if Failover Cluster service exists
strKeyPath = "SYSTEM\CurrentControlSet\Services\ClusSvc"
'connect to the registry provider
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
If oReg.EnumKey(HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys) = 0 Then
'Cluster Service exists, continue, check if specified cluster resource exists
bCLRes = False
CLResWMIQuery = "Select * from MSCluster_Resource Where Type = '" & strCLResType &"' AND Name LIKE '" & strCLResName & "'"
Set objWMICluster = GetObject("winmgmts:\\" & strComputer & "\root\MSCluster")
Set ColCLRes = objWMICluster.ExecQuery (CLResWMIQuery)
For Each objCLRes in ColCLRes
bCLRes = TRUE
Next
'NetBIOS Computer Name
ComputerName = Split(strComputer, ".", -1)(0)
'Read Cluster name from registry
strCLKeyPath = "SYSTEM\CurrentControlSet\Services\ClusSvc\Parameters"
strCLNameValue = "ClusterName"
oReg.GetStringValue HKEY_LOCAL_MACHINE,strCLKeyPath, strCLNameValue,strClusterName
'Proceed if NetBIOS Computer Name equals to cluster name
If UCase(ComputerName) = UCase(strClusterName) Then
IF bCLRes = TRUE THEN
Set oInstance = oDiscoveryData.CreateClassInstance("$MPElement[Name='QND.Hyperv2012R2.HyperV.Cluster.ComputerRole']$")
oInstance.AddProperty "$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", strComputer
oInstance.AddProperty "$MPElement[Name='System!System.Entity']/DisplayName$", strComputer
oInstance.AddProperty "$MPElement[Name='QND.Hyperv2012R2.HyperV.Cluster.ComputerRole']/ClusterName$", UCase(strClusterName)
oDiscoveryData.AddInstance(oInstance)
END IF
END IF
End If
oAPI.Return oDiscoveryData </Script></ScriptBody>
<TimeoutSeconds>120</TimeoutSeconds>
</DataSource>
</Discovery>