Tags: vSphere, PowerShell
Wenn man vor allem in kleineren Umgebungen keine Management-Tools hat, die eine virtuelle Infrastruktur inventarisieren, dann eignet sich auch PowerCLI, um einen Überblick über die Konfiguration von virtuellen
Maschinen und die ihnen zugeteilten Ressourcen zu erhalten.
Das Auslesen und Filtern von VM-Eigenschaften ist auch bei Hyper-V eine praktikable Methode, um zu überprüfen, wie viele Ressourcen eines Hosts bereits vergeben wurden. Das dafür zuständige Cmdlet Get-VM gibt jedoch nicht allzu viele Informationen über die virtuellen Maschinen preis.
Basisinformationen abrufen mit Get-VM
Dagegen bietet VMware für diese Aufgabe zwei Cmdlets, die eine ganze Fülle von Daten liefern. Das einfachere der beiden heißt ebenfalls Get-VM. Ruft man es ohne Parameter auf, dann gibt es eine Liste aller VMs aus. Sie bezieht sich entweder auf einen vCenter-Server oder einen ESXi-Host, je nachdem, womit man sich in der PowerCLI-Session verbunden hat.
Standardmäßig zeigt es nur vier Eigenschaften, nämlich Name, PowerState, Num CPUs und MemoryGB. Ihre Anzahl kann man vergrößern, indem man die Ausgabe an Format-List (Alias fl) weiterleitet. Allerdings wird man der Übersichtlichkeit halber die Zahl der VMs einschränken, etwa durch die Verwendung des Parameter Name:
Get-VM -Name "WS2012R2*" | fl -Property *
Auf diese Weise erhält man bereits eine ganze Reihe von Eigenschaften, wie den Power-Status (z.B. ein- oder ausgeschaltet), den zugewiesenen Arbeitsspeicher, die Zahl der vCPUs, die Größe des konfigurierten und bereits verbrauchten Speicherplatzes oder die ID von Gast, Host sowie Datastore.
Möchte man die wichtigsten Ressourcen aufsummieren, die an VMs eines Hosts zugewiesen wurden, dann könnte man so vorgehen:
Get-VM | %{$nCPU += $_.NumCpu; $RAM += $_.MemoryMB; $Storage += $_.ProvisionedSpaceGB}
"CPUs: $nCPU, RAM: $RAM MB, zugeteilter Speicherplatz: $Storage GB"
Falls man sich mit vCenter verbunden hat, dann kann man die Abfrage auf einen Host eingrenzen, indem man die Ausgabe so filtert:
Get-VM | ? VMHostId -eq "HostSystem-host-28"
Wie die ID für einen bestimmten Host lautet, kann man mit dem Aufruf von
Get-VMHost
ermitteln.
Erweiterte VM-Eigenschaften auslesen mit Get-View
Das mächtigere der beiden Cmdlets ist Get-View, das wesentlich mehr Daten zu jeder VM liefert und so über praktisch alle Aspekte einer virtuellen Maschine Auskunft gibt. Obwohl es also mehr Informationen abruft als Get-VM, bietet es erhebliche Performance-Vorteile und empfiehlt sich, wenn man eine große Zahl an VMs untersuchen möchte.
Der Aufruf von Get-View ist etwas komplizierter, weil es für die Auswahl der virtuellen Maschinen einen Filter verlangt, der seinerseits nur eine Hash-Tabelle akzeptiert. In dieser ist die Verwendung von regulären Ausdrücken erlaubt.
Will man die Ausgabe anhand des VM-Namens einschränken, dann würde ein Aufruf so aussehen:
Get-View -ViewType VirtualMachine -Filter @{"Name"="Win*"}
In diesem Fall erhielte man alle virtuellen Maschinen, deren Name mit "Win" beginnt. Möchte man alle sehen, dann gibt man statt "Win*" einfach nur ".*" an.
Auf den ersten Blick ist die Zahl der nützlichen Informationen überschaubar, die man auf diese Weise erhält. Zahlreiche weitere Eigenschaften verbergen sich indes in untergeordneten Sets, wobei man dort nicht nur statische Einstellungen abfragen kann, sondern zudem jede Menge Laufzeitinformationen erhält.
Die Konfiguration von VMs erhält man ausführlich über die Eigenschaft config:
(Get-View -ViewType VirtualMachine -Filter @{"Name"="Win*"}).Config
Diese kann man weiter herunterbrechen, etwa über die Eigenschaften Files, Tools oder Hardware, um Auskunft über die Dateien und Verzeichnisse einer VM, die VMware Tools oder die virtuelle Hardware zu erhalten:
(Get-View -ViewType VirtualMachine -Filter @{"Name"="Win*"}).Config.Files
Wenn man sich durch den Wust der Daten arbeiten will, dann ist es einfacher, wenn man das Ergebnis von Get-View in einer Variablen speichert und über diese dann die einzelnen Eigenschaften abruft:
$VMs = Get-View -ViewType VirtualMachine -Filter @{"Name"="Win*"}
$VMs.Guest
Ein Vorteil dieses Vorgehens besteht darin, dass man die Eigenschaften über das Autovervollständigen der PowerShell ergänzen kann.
Täglich Know-how für IT-Pros mit unserem Newsletter
Verwandte Beiträge
- VMware bringt künftig vCenter- vor ESXi-Releases, vSphere 8 U1 als IA verfügbar
- VMware PowerCLI v13: Alle Module nun für Windows, Mac und Linux, Update für vSAN und NSX
- VMware PowerCLI 12.6 bringt Cmdlets für das vCSA-Backup
- Tool für Maximalwerte in VMware vSphere, Poster für Cmdlets in PowerCLI 10
- VMware PowerCLI 10.0 für Windows, macOS und Linux: Installation, Anmeldung an vSphere, Upgrade
Weitere Links