Hyper-V VM Dynamic Memory Performance Discovery

VKernel.CapacityAnalyzer.VmDymMemoryPerfDiscovery (Discovery)

Element properties:

TargetMicrosoft.SystemCenter.VirtualMachineManager.2012.HyperVHost
EnabledTrue
Frequency900
RemotableFalse

Object Discovery Details:

Discovered Classes and their attribuets:

Member Modules:

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

Source Code:

<Discovery ID="VKernel.CapacityAnalyzer.VmDymMemoryPerfDiscovery" Enabled="true" Target="SCVMM2012DiscoveryMP!Microsoft.SystemCenter.VirtualMachineManager.2012.HyperVHost" ConfirmDelivery="false" Remotable="true" Priority="Normal">
<Category>Discovery</Category>
<DiscoveryTypes>
<DiscoveryClass TypeID="VKernel.CapacityAnalyzer.VmDynMemoryPerf">
<Property TypeID="VKernel.CapacityAnalyzer.VmDynMemoryPerf" PropertyID="Name"/>
<Property TypeID="System!System.Entity" PropertyID="DisplayName"/>
</DiscoveryClass>
</DiscoveryTypes>
<DataSource ID="DS" TypeID="Windows!Microsoft.Windows.TimedScript.DiscoveryProvider">
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
<ScriptName>VmDynMemoryDiscovery.js</ScriptName>
<Arguments>$MPElement$ $Target/Id$ $Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/PrincipalName$ $Target/Property[Type="SCVMMLibraryMP!Microsoft.SystemCenter.VirtualMachineManager.VMHost"]/VMMId$</Arguments>
<ScriptBody><Script>var oAPI = WScript.CreateObject("MOM.ScriptAPI");
var oArgs = WScript.Arguments;
var SourceId = oArgs.Item(0);
var ManagedEntityId = oArgs.Item(1);
var ComputerName = oArgs.Item(2);
var VmmGuid = oArgs.Item(3);
var locator = WScript.CreateObject("WbemScripting.SWbemLocator");
var services = locator.ConnectServer(ComputerName, "root\\cimv2");
var wmiEnum = new Enumerator(services.ExecQuery("select * from meta_class where __Class = \"Win32_PerfFormattedData_BalancerStats_HyperVDynamicMemoryVM\"", "WQL", 0x20));
var oDiscoveryData = oAPI.CreateDiscoveryData(0, SourceId, ManagedEntityId);
var classExists = false;

for (; !wmiEnum.atEnd(); wmiEnum.moveNext())
{
classExists = true;
}

if (classExists)
{
wmiEnum = new Enumerator(services.ExecQuery("select * from Win32_PerfFormattedData_BalancerStats_HyperVDynamicMemoryVM where CurrentPressure &gt; 0", "WQL", 0x20));

for (; !wmiEnum.atEnd(); wmiEnum.moveNext())
{
var memObj = wmiEnum.item();
var oInst = oDiscoveryData.CreateClassInstance("$MPElement[Name='VKernel.CapacityAnalyzer.VmDynMemoryPerf']$")

oInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", ComputerName);
oInst.AddProperty("$MPElement[Name='SCVMMLibraryMP!Microsoft.SystemCenter.VirtualMachineManager.VMHost']/VMMId$", VmmGuid);

oInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", memObj.Name);
oInst.AddProperty("$MPElement[Name='VKernel.CapacityAnalyzer.VmDynMemoryPerf']/Name$", memObj.Name);
oDiscoveryData.AddInstance(oInst);
}
}
oAPI.Return(oDiscoveryData);
</Script></ScriptBody>
<TimeoutSeconds>300</TimeoutSeconds>
</DataSource>
</Discovery>