Get-VM, Get-View: Konfiguration von VMs untersuchen mit PowerCLI


    Tags: ,

    vSphere-ArchitekturWenn 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-Eigen­schaften 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 Übersicht­lichkeit 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 Arbeits­speicher, die Zahl der vCPUs, die Größe des konfigurierten und bereits verbrauchten Speicher­platzes oder die ID von Gast, Host sowie Datastore.

    Die grundlegenden Eigenschaften von VMs erhält man mit Get-VM

    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 unterge­ordneten Sets, wobei man dort nicht nur statische Einstellungen abfragen kann, sondern zudem jede Menge Laufzeit­informationen 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 herunter­brechen, 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

    Informationen zu den VMware Tools abrufen mit Get-View

    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 Auto­vervoll­ständigen der PowerShell ergänzen kann.

    Täglich Know-how für IT-Pros mit unserem Newsletter

    Wir ver­wenden Ihre Mail-Adresse nur für den Ver­sand der News­letter.
    Es erfolgt keine per­sonen­be­zogene Auswertung.

    Bild von Wolfgang Sommergut
    Wolfgang Sommergut hat lang­jährige Erfahrung als Fach­autor, Berater und Kon­ferenz­sprecher zu ver­schie­denen Themen der IT. Da­ne­ben war er als System­ad­mi­ni­stra­tor und Con­sultant tätig.
    // Kontakt: E-Mail, XING, LinkedIn //

    Verwandte Beiträge

    Weitere Links