Uruchamiamy powershell i dodajmy przystawkę VMM poleceniem:

Add-PSSnapin Microsoft.SystemCenter.VirtualMachineManager

Ustawiamy nazwy serwer VMM oraz klastra Hyper-V który nas interesuje:

$VMMServerName = "vmm.lab.local"
$HVClusterName = "hvcluster.lab.local"

Poleceniem Get-VMHostCluster pobieramy informacje o interesującym nas klastrze:

$HVCluster = Get-VMHostCluster -Name $HVClusterName -VMMServer $VMMServerName

Poniższym kodem przechodzimy po kolei przez każdy node klastra i listujemy maszyny wirtualne znajdujące się na nim:

foreach($HVNode in $HVCluster.Nodes)
{
 $HVNode.VMs | Select Name, VMHost
}

Skrypt w całej okazałości:

Add-PSSnapin Microsoft.SystemCenter.VirtualMachineManager
$VMMServerName = "vmm.lab.local"
$HVClusterName = "hvcluster.lab.local"
$HVCluster = Get-VMHostCluster -Name $HVClusterName -VMMServer $VMMServerName
foreach($HVNode in $HVCluster.Nodes)
{
 $HVNode.VMs | Select Name, VMHost
}

Tak wygląda przykładowy wynik skryptu:

Name       VMHost
----       ------
VM-HUB     hv1.lab.local
VM-TS-1-1  hv1.lab.local
VM-TS-1-2  hv1.lab.local
VM-TS-1-3  hv1.lab.local
VM-TS-1-4  hv2.lab.local
VM-TS-2-1  hv2.lab.local
VM-TS-2-2  hv2.lab.local
REMOTEAPP  hv2.lab.local

W przypadku usunięcia “-Name $HVClusterName” ze skryptu będą wylistowane wszystkie maszyny z klastrów zarządzanych przez VMM.