Powershell verwaltet Virtuelle Maschinen
30. Januar 2014Effizientes Verwalten von virtuellen Maschinen (VMs) beim Hyper-V – dazu gibt es verschiedene Tools mit grafischen Interface. Doch wer die Aufgabe schnell und automatisiert erledigt haben will, der sollte die einschlägigen Powershell-Kommandos für die VMs kennen.
Wer heutzutage sich mit Microsoft-Technik auseinandersetzt, der kommt um die Powershell nicht herum. Kaum eine Aufgabe, die sich damit nicht lösen lässt. Dabei übernehmen die einzelnen Kommandos – Cmdlets – die Funktionalität und mit der mächtigen Shell – der Powershell selbst – werden diese Funktionsmodule „orchestriert“.
In vielen Fälle lassen sich mit „funktional aufgemotzten Einzeilern“ umfangreiche Aufgaben automatisieren und liefern das gewünschte Ergebnis. Auch beim Hyper-V gilt der Einsatz der Powershell – mit den entsprechenden Hyper-V-bezogenen Cmdlets – als der Schlüssel zum Erfolg, wenn man diese Virtualisierungs-Plattform zu verwalten hat.
Wer mit der Powershell und dem Hyper-V loslegen möchte, der kann auf einige relativ einfache Kommandos zurückgreifen, die in diesem Beitrag, sozusagen als ein erster Schritt in diese Technologie, als eine Art Übersicht publiziert sind. Für alle im Folgenden gezeigten Befehle gilt, dass sie in einer Powershell-Instanz ausgeführt werden müssen und dass sie für die Version 4.0 der Powershell gedacht sind – damit beziehen sie sich auf Windows 8.1 und Windows Server 2012 Release 2 (R2).
Erzeugen einer neuen virtuellen Maschine
Der folgende Befehl erzeugt eine neue virtuelle Maschine (VM) – sie trägt hier die Bezeichnung „myVM“ und dabei ist sie so angelegt, dass sie 512 MByte Speicher belegt.
New-VM –Name "myVM" -MemoryStartupBytes 512MB
Das Gegenteil – das Löschen bzw. Entfernen einer bestehenden VM (auch hier wieder die Vm „myVM“) wird mit dem folgenden Kommando erledigt:
Remove-VM "myVM"
Der Start einer bestehenden VM ist auch sehr einfach:
Start-VM -Name myVM
Mit diesem Befehl wird die VM „myVM“ genommen und gestartet, sprich sie geht damit über in den Zustand „active“. Umgekehrt lässt sich eine laufende VM auch anhalten – wie es das folgende Kommando (wieder bei der VM „myVM“) verdeutlicht:
Stop-VM -Name myVM
Wer eine laufende VM nur pausieren lassen möchte, dem steht der folgende Befehl zur Verfügung:Suspend-VM –Name myVMPausiert die VM, kann sie überResume-VM –Name myVMwieder laufen gelassen werden.Wer die aktuelle Konfiguration einer laufenden VM sichern möchte, der muss nur das Kommando Save-VM einsetzen, so wie in diesem Beispiel:
Save-VM -Name myVM
Das entspricht dem Übergang in den Hibernate-Zustand bei einem Notebook.
Das Umbenennen einer VM wird auch nötig – etwa wenn einem der bestehende Name nicht mehr gefällt oder wenn man Vorgaben bei der Namensgebung nachträglich zu erfüllen hat (wenn zum Beispiel die VM in einem anderen Bereich übernommen werden soll). In dem hier gezeigten Beispiel wird die VM umbenannt von „myVM“ zu „yourVM“:
Rename-VM myVM –NewName yourVM
Aber auch umfangreichere Aktionen, wie etwa das Verschieben einer VM von einem Hyper-V-Host auf einen anderen, sind mit der Powershell schnell angestoßen. Hier wird die VM mit dem Namen „myVM“ vom lokalen Hyper-V-Server auf einen Server namens „Tatooine“ verschoben:
Move-VM “myVM” Tatooine
Export und Import von laufenden VMs
Die Powershell-Kommandos zum Importieren und Exportieren von VMs sind sehr nützlich und arbeiten auch gut zusammen. Mit dem Export-Befehl kann er Administrator eine laufende VM nehmen und sie auf die Festplatte exportieren. Dazu gibt es im folgenden Befehl ein Beispiel:
Export-VM –Name myVM –Path D:\myVMDirectory
Damit wird die VM namens „myVM“ auf ein lokales Festplattenlaufwerk (mit dem Pfadnamen „D:\myVMDirectory“ exportiert.
Alternativ kann der Systembetreuer auch den import-Befehl verwenden, um eine zuvor exportierte VM aus dem entsprechenden Dateipfad zu importieren und sie wieder auf dem Hyper-V-Host ziehen. Dabei muss man allerdings darauf achten, dass der komplette Pfad und der exportierte Dateiname verwendet werden.
Import-VM –Path ‚D:\myVMDirectory\VMFileName.XML‘