Hyper-V MPE 2019 Virtual Processor Discovery

HyperV.MPE.2019.VirtualProcessor.Discovery (Discovery)

Discovery

Element properties:

TargetMicrosoft.Windows.HyperV.Discovery.VirtualMachine
EnabledTrue
Frequency86400
RemotableFalse

Object Discovery Details:

Discovered Classes and their attribuets:

Member Modules:

ID Module Type TypeId RunAs 
ScriptPowershell DataSource Microsoft.Windows.TimedPowerShell.DiscoveryProvider Default

Source Code:

<Discovery ID="HyperV.MPE.2019.VirtualProcessor.Discovery" Enabled="true" Target="MSWinHV2019Dis!Microsoft.Windows.HyperV.Discovery.VirtualMachine" ConfirmDelivery="true" Remotable="true" Priority="Normal">
<Category>Discovery</Category>
<DiscoveryTypes>
<DiscoveryClass TypeID="HyperV.MPE.2019.VirtualProcessor">
<Property TypeID="HyperV.MPE.2019.VirtualProcessor" PropertyID="VPNumber"/>
<Property TypeID="HyperV.MPE.2019.VirtualProcessor" PropertyID="VPName"/>
<Property TypeID="MSWinHVLib!Microsoft.Windows.HyperV.VirtualHardwareComponent" PropertyID="DeviceId"/>
<Property TypeID="MSWinHVLib!Microsoft.Windows.HyperV.VirtualHardwareComponent" PropertyID="Name"/>
<Property TypeID="MSWinHVLib!Microsoft.Windows.HyperV.VirtualHardwareComponent" PropertyID="VirtualMachineName"/>
<Property TypeID="SLib!System.Entity" PropertyID="DisplayName"/>
</DiscoveryClass>
</DiscoveryTypes>
<DataSource ID="ScriptPowershell" TypeID="MSWinLib!Microsoft.Windows.TimedPowerShell.DiscoveryProvider">
<IntervalSeconds>86400</IntervalSeconds>
<SyncTime/>
<ScriptName>DiscoveryVirtualProcessor.PS.ps1</ScriptName>
<ScriptBody><Script>
param($sourceId,$managedEntityId,$computerName,$virtualMachineID,$virtualMachineName)

#Classes for Hyper-V 2012 / 2019
$MSVM_VirtualSystemSettingData=gwmi -Namespace root\virtualization\v2 MSVM_VirtualSystemSettingData -Filter "ElementName = '$virtualMachineName'"
$MsVM_VirtualSystemManagementService=gwmi -Namespace root\virtualization\v2 MsVM_virtualSystemManagementService
$MSVM_ComputerSystem=gwmi -Namespace root\virtualization\v2 MSVM_ComputerSystem

$VMVSSD=$MSVM_VirtualSystemSettingData | sort -property ElementName

#SCOM
$api = New-Object -comObject 'MOM.ScriptAPI'
$discoveryData = $api.CreateDiscoveryData(0, $sourceId, $managedEntityId)

#run VM SummaryInformation provided by VMMS Service
$SummaryInformation=($MsVM_virtualSystemManagementService.GetSummaryInformation( @($VMVSSD.__Path ) , @(0,1,2,3,4,100,101,102,103,104,105,106,107,108))).SummaryInformation | select -first 1

$VM=$MSVM_ComputerSystem | where {$_.name -eq $VMVSSD.systemname}

$VPsIteration = $SummaryInformation.NumberOfProcessors

$value=0
while($value -lt $SummaryInformation.NumberOfProcessors)
{
#write-host $value

#Create a Central Queue class instance for each subfolder.
$instance = $discoveryData.CreateClassInstance("$MPElement[Name='HyperV.MPE.2019.VirtualProcessor']$")

$instance.AddProperty("$MPElement[Name='SLib!System.Entity']/DisplayName$",$virtualMachineName + ":Hv VP " + $value)

$instance.AddProperty("$MPElement[Name='MSWinLib!Microsoft.Windows.Computer']/PrincipalName$", $computerName)

$instance.AddProperty("$MPElement[Name='MSWinHVLib!Microsoft.Windows.HyperV.ServerRole']/ServerId$", $computerName)
$instance.AddProperty("$MPElement[Name='MSWinHVLib!Microsoft.Windows.HyperV.VirtualMachine']/VirtualMachineId$", $virtualMachineID)

$instance.AddProperty("$MPElement[Name='MSWinHVLib!Microsoft.Windows.HyperV.VirtualHardwareComponent']/DeviceId$", $value)
$instance.AddProperty("$MPElement[Name='MSWinHVLib!Microsoft.Windows.HyperV.VirtualHardwareComponent']/Name$", $virtualMachineName)
$instance.AddProperty("$MPElement[Name='MSWinHVLib!Microsoft.Windows.HyperV.VirtualHardwareComponent']/VirtualMachineName$", $virtualMachineName)
$instance.AddProperty("$MPElement[Name='HyperV.MPE.2019.VirtualProcessor']/VPNumber$", $value)
$instance.AddProperty("$MPElement[Name='HyperV.MPE.2019.VirtualProcessor']/VPName$", $virtualMachineName + ":Hv VP " + $value)

$discoveryData.AddInstance($instance)
#$api.LogScriptEvent("ADD: ",3181,0, "Added " + $VM.elementname + ":Hv VP " + $value)


$value++
}

#Return the discovery data.
$discoveryData
#$api.LogScriptEvent("ADD: ",3182,0, "DiscoveryData returned.")

</Script></ScriptBody>
<Parameters>
<Parameter>
<Name>sourceID</Name>
<Value>$MPElement$</Value>
</Parameter>
<Parameter>
<Name>managedEntityID</Name>
<Value>$Target/Id$</Value>
</Parameter>
<Parameter>
<Name>computerName</Name>
<Value>$Target/Host/Host/Property[Type="MSWinLib!Microsoft.Windows.Computer"]/PrincipalName$</Value>
</Parameter>
<Parameter>
<Name>virtualMachineID</Name>
<Value>$Target/Property[Type="MSWinHVLib!Microsoft.Windows.HyperV.VirtualMachine"]/VirtualMachineId$</Value>
</Parameter>
<Parameter>
<Name>virtualMachineName</Name>
<Value>$Target/Property[Type="MSWinHVLib!Microsoft.Windows.HyperV.VirtualMachine"]/VirtualMachineName$</Value>
</Parameter>
</Parameters>
<TimeoutSeconds>240</TimeoutSeconds>
</DataSource>
</Discovery>