Dung K Hoang has an excellent series of blog posts on how to manage Hyper-V with WMI.
I have taken a couple of his scripts and built a function that takes input from the pipeline and gives me an object that has three properties, a HostServer, VirtualMachine, and a Switch.
1: function Get-HyperVInfo {
2: begin {
3: $VmSwitchinfo = @();
4: }
5: process {
6: $computer = $_
7: $ListofVMs = gwmi -namespace root\virtualization Msvm_ComputerSystem -filter "ElementName <> Name" -computer $computer
8: $ListofSwitches = gwmi -namespace root\virtualization Msvm_VirtualSwitch -computer $computer
9: $ListofSwitchPorts = gwmi -namespace root\virtualization Msvm_SwitchPort -computer $computer
10: foreach ($Switch in $ListofSwitches)
11: {
12: $SwitchGUID = $Switch.Name
13: $SwitchDisplayName = $Switch.ElementName
14: $PortsOnSwitch = $ListofSwitchPorts | where {$_.SystemName -match $SwitchGUID}
15:
16: foreach ($Port in $PortsOnSwitch)
17: {
18: $PortPath = $Port.__PATH
19: $ListofConnections = gwmi -namespace root\virtualization Msvm_ActiveConnection -computer $computer
20: $a = $ListofConnections | where {$_.Antecedent -like $PortPath}
21: if ($a -ne $NULL)
22: {
23: $LANEndPoint = $a.Dependent
24: foreach ($VM in $ListofVMs)
25: {
26: $VMGUID = $VM.Name
27: $VMDisplayName = $VM.ElementName
28: if ($LanEndPoint -like "*$VMGUID*")
29: {
30:
31: $vminfo = "" |Select-Object VirtualMachine ,HostServer, switch
32: $vminfo.Switch = $SwitchDisplayName
33: $vminfo.VirtualMachine = $VMDisplayName
34: $vminfo.HostServer = $_
35: $vmswitchinfo += $vminfo
36:
37: }
38: }
39: }
40: }
41: }
42:
43:
44: }
45: end {
46: $vmswitchinfo
47: }
48: }
To use this function you can just do something like this
“HVSERVER1″,”HVSERVER2″,”HVSERVER3″ | Get-HypervInfo
I have used this script to get a bunch of information on all the VM’s in my Hyper V Cluster. Note that this is just using WMI so I can query my Server Core machines that are running Hyper V.
Many Many thanks to Dung for this info. I would not have even been able to get started without his help.
Entries (RSS)