Überblick PowerShell Hyper-V Cmdlets
Es gibt unzählige Cmdlets für die Verwaltung und das Konfigurieren von virtuellen Maschinen in Hyper-V. In diesem Artikel möchte ich die meiner Meinung nach 10 wichtigsten kurz erläutern. Detailliert findet man alle auf der Technet Seite.
1. Vorhandene virtuelle Maschinen
Als Erstes möchte man wissen, welche virtuellen Maschinen auf dem Hyper-V vorhanden sind. Hier gibt es das Cmdlet: Get-VM. Dieses liefert alle vorhandenen virtuellen Maschinen mit einigen Eigenschaften zurück.
PS c:> Get-VM

Möchte man jetzt mehr Informationen von einem bestimmten virtuellen Computer erhalten, so kann man hierfür die Pipe mit der Option select und einer Wild Card (*) verwenden.
PS C:> Get-VM vkubuntu | select *

Noch ausführlicher mit bestimmten Informationen geht es natürlich, wenn man verschiedene Filter anwendet. Hier ist wieder das richtige Handling mit der Pipe gefragt.
Im folgenden Beispiel sollen alle virtuellen Maschinen nach deren Status und Uptime ausgegeben werden.
PS C:> Get-VM where {$_.state -eq 'running'} | sort Uptime

2. Virtuelle Maschinen starten
Natürlich kann man virtuelle Maschinen auch mit der PowerShell sehr einfach starten. Hierfür verwendet man das Cmdlet Start-VM. Mit diesem Cmdlet ist es z. B. möglich, virtuelle Maschinen über ein hinterlegtes Script zu starten.
Man könnte sich folgendes Szenario vorstellen. Wenn sich ein bestimmter Benutzer am System anmeldet, soll über ein PowerShell-Anmeldescript automatisch gleich ein bestimmter virtueller Computer gestartet werden.
PS C:>Start-VM Kubuntu
Wenn man viele virtuelle Maschinen auf einmal starten möchte, so kann dieser Vorgang sehr lange dauern. Hier wäre es sinnvoll, die Befehle als Hintergrundjobs ausführen zu lassen.
3. Virtuelle Maschinen stoppen
Genauso wie man auch virtuelle Maschinen starten kann, so können diese auch gestoppt werden. Im Wesentlichen gibt es drei wichtige Arten, wie der virtuelle Computer ausgeschaltet wird.
PS C:>Stop-VM Kubuntu
Ohne eine Angabe wird der Computer durch das Gastsystem heruntergefahren. Je nach geöffneten Anwendungen, kann das Herunterfahren schon etwas Zeit in Anspruch nehmen.
PS C:>Stop-VM Kubuntu -Force
Dieser Parameter, denke ich, ist klar. Hier wird der virtuelle Computer ebenfalls über das Gast System heruntergefahren. Aber nach einer Wartezeit von 5 Minuten wird er auf alle Fälle ausgeschaltet. Mit diesem Parameter kann natürlich beim Herunterfahren ein Datenverlust auftreten.
PS C:>Stop-VM Kubuntu -TurnOff
Auch hier erfolgt das sofortige Abschalten, was auch zu einem Datenverlust führen kann.
4. Prüfpunkt bzw. Snapshot erstellen
Prüfpunkte, besser bekannt als Snapshot, sind immer sehr hilfreich, wenn man etwas testen oder einfach den Zustand einer aktuellen virtuellen Maschine sichern möchte. Die Windows PowerShell bietet hierfür das Cmdlet Chekpoint-VM.
Checkpoint-VM kubuntu -SnapshotName "vskubuntu"

Auch hier könnte man sich wieder viele verschiedene Szenarien vorstellen, indem man mehr mit der PowerShell machen kann, als die grafische Oberfläche bietet. Z.B. würde man ein Skript erstellen können, das automatisiert zu einem bestimmten Zeitpunkt einen Prüfpunkt anlegt.
5. Prüfpunkte bzw. Snapshots auflisten
Um zu sehen, welche Snapshots auf dem System vorhanden sind, kann man das Cmdlet Get-VMSnapsot verwenden. Sollte man es mit einer Wild Card (*) anwenden, so erhält man alle Snapshots von allen virtuellen Maschinen. Wenn man jedoch nur die einer bestimmten Maschine haben möchte, so reicht die Angabe des Namens.
PS C:>Get-VMSnapshot *
PS C:>Get-VMSnapshot kubuntu

6. Prüfpunkte bzw. Snapshots entfernen
Falls man das Erstellen von Snapshots automatisiert, können sich schon viele Dateien ansammeln. Um hier auch Überflüssiges wieder loszuwerden, bietet die PowerShell das Cmdlet Remove-VMSnapshot an.
PS C:>Get-VM kubuntu | Get-VMSnapshot -Name vskubuntu | Remove-VMSnapshot

7. Virtuelle Maschinen exportieren
Mit Export-VM wird die komplette virtuelle Maschine exportiert. Inbegriffen sind hier die komplette vhd bzw. vhdx Datei sowie sämtliche Snapshots und Konfigurationsdateien.
PS C:> Export-VM "Kubuntu" -Path B:Backup
8. Informationen zum Netzwerkadapter
Möchte man herausfinden, welcher Netzwerkadapter* einer bestimmten Maschine zugewiesen ist und welche IP-Adresse diese Maschine dann hat, so bietet die PowerShell das Cmdlet Get-NetzworkAdapter.
PS C:>Get-VMNetworkAdapter -VMName kubuntu
PS C:>Get-VMNetworkAdapter -VMName kubuntu | select -expand IPAddresses

9. Virtuelle Festplatten testen
Mit dem Cmdlet TestVHD kann man virtuelle Festplatten* testen. Sofern alles in Ordnung ist, gibt die PowerShell True zurück. Sollte ein Fehler vorliegen, dann wird natürlich False zurückgegeben.
PS C:>Test-VHD kubuntu.vhdx

10. Informationen zum Hyper-V Host
Zu guter Letzt möchte man evtl. auch Informationen zum Hyper-V Host erhalten. Hierfür kann man Get-VMHost verwenden.
PS C:> Get-VMHost

Datensicherung und Backup erstellen
Grundsätzlich solltest du immer von deinen Systemen eine Datensicherung erstellen. Vor allem, wenn du aber tiefergreifende Änderungen vornimmst, ist es vorher umso ratsamer, eine Sicherung zu erstellen. Du kannst hierfür z. B. bordeigene Tools wie die Windows Robocopy verwenden, oder aber professionelle Sicherungsprogramme wie EaseUS Todo Backup Free*, welche dir mehr Optionen bieten.
Fazit
Hyper-V mit der PowerShell zu verwalten, bietet wesentlich mehr Möglichkeiten, als wenn man die Maschinen mit dem grafischen Hyper-V Manager verwaltet.
Gerade im Bereich der Automatisierung ist die PowerShell sehr zu empfehlen und bietet Möglichkeiten, welche es per GUI gar nicht gibt. Es lohnt sich meiner Meinung nach auf jeden Fall, sich mal die wichtigsten Cmdlets anzusehen. Für das Scripting mit der Windows PowerShell kannst du auch Visual Studio Code verwenden. Diese IDE bietet wesenltich mehr Features.










es war mir nicht bekannt, dass es eine test Funktion für VMs gibt! was genau wird getetestet?
Hallo,
damit lässt sich die virtuelle Festplatte testen!