var locator = WScript.CreateObject("WbemScripting.SWbemLocator");
var services = locator.ConnectServer(computerName, "root");
var wmiEnum = new Enumerator(services.InstancesOf("__NAMESPACE", 0x20));
var hasClusterNamespace = false;
for (; !wmiEnum.atEnd(); wmiEnum.moveNext())
{
var namespaceObj = wmiEnum.item();
if (hasClusterNamespace)
{
services = locator.ConnectServer(computerName, "root\\MSCluster");
wmiEnum = new Enumerator(services.ExecQuery(
"SELECT * FROM meta_class WHERE __Class = \"MSCluster_ClusterSharedVolume\"", "WQL", 0x20));
hasCsvClass = !wmiEnum.atEnd();
}
if (hasCsvClass)
{
wmiEnum = new Enumerator(services.InstancesOf("MSCluster_ClusterSharedVolume", 0x20));
for (; !wmiEnum.atEnd(); wmiEnum.moveNext())
{
var csvObj = wmiEnum.item();
var partEnum = new Enumerator(csvObj.Associators_(
"MSCluster_ClusterSharedVolumeToPartition", "MSCluster_DiskPartition"));
if (partEnum.atEnd())
continue;
var partObj = partEnum.item();
var diskEnum = new Enumerator(partObj.Associators_("MSCluster_DiskToDiskPartition", "MSCluster_Disk"));
if (diskEnum.atEnd())
continue;
var diskObj = diskEnum.item();
var oInst = oDiscoveryData.CreateClassInstance("$MPElement[Name='VKernel.CapacityAnalyzer.ClusterSharedVolume']$");