var momApi = new ActiveXObject("MOM.ScriptAPI");
var pBag = momApi.CreatePropertyBag();
var servername = "";
var vmRunning = 0;
var vmPoweredOff = 0;
var vmPaused = 0;
var vmSaved = 0;
var vmTotal = 0;
try {
GetHostComputerName();
var vms = getVMComputerSystemInstances();
if (vms != null) {
vmTotal = vms.Count;
for (var i = 0; i < vms.Count; i++) {
var vm = vms.ItemIndex(i);
var enabledStateProperty = vm.Properties_.Item("EnabledState");
if (enabledStateProperty != null) {
var enabledStateValue = enabledStateProperty.Value;
switch (enabledStateValue) {
case 2:
vmRunning++;
break;
case 3:
vmPoweredOff++;
break;
case 6:
vmSaved++;
break;
case 9:
vmPaused++;
break;
default:
break;
}
}
}
}
}
catch (e) {
//Invalid namespace on Win 2012 node
if (e.number == -2147217394) {
}
else {
momApi.LogScriptEvent(SCRIPT_NAME, EVENT_ID, SEVERITY_ERROR, e.message + " error number: " + e.number);
}
}
finally {
pBag.AddValue("vmRunning", vmRunning);
pBag.AddValue("vmPoweredOff", vmPoweredOff);
pBag.AddValue("vmPaused", vmPaused);
pBag.AddValue("vmSaved", vmSaved);
pBag.AddValue("vmTotal", vmTotal);
momApi.Return(pBag);
}
function getVMComputerSystemInstances() {
var objSWbemLocator = new ActiveXObject("WbemScripting.SWbemLocator");
var wmiSvc = objSWbemLocator.ConnectServer(".", "root\\virtualization\\v2");
var query = "SELECT ElementName, EnabledState, Name FROM Msvm_ComputerSystem WHERE Name <>'" + servername + "'";
var results = wmiSvc.ExecQuery(query);
return results;
}
function GetHostComputerName() {
var oNetwork;
oNetwork = new ActiveXObject("WScript.Network");
servername = oNetwork.ComputerName;
}</Script></ScriptBody>
<TimeoutSeconds>$Config/TimeoutSeconds$</TimeoutSeconds>
</DataSource>
<ConditionDetection ID="PM" TypeID="Perf!System.Performance.DataGenericMapper">
<ObjectName>$Config/ObjectName$</ObjectName>
<CounterName>$Config/CounterName$</CounterName>
<InstanceName>$Config/InstanceName$</InstanceName>
<Value>$Config/Value$</Value>
</ConditionDetection>
</MemberModules>
<Composition>
<Node ID="PM">
<Node ID="PDS"/>
</Node>
</Composition>
</Composite>
</ModuleImplementation>
<OutputType>Perf!System.Performance.Data</OutputType>
</DataSourceModuleType>