Hyper-V: Snapshots einfach mit der PowerShell verwalten

Die PowerShell ist der grafischen Oberfläche in vielen Punkten überlegen. So lassen sich mit ihr auch Snapshots in Hyper-V viel leichter als mit der doch begrenzten GUI verwalten.

Der Einsatz von PowerShell-Befehlen ist einfach und effizient, wenn es zum Beispiel um das Erstellen und Entfernen von Snapshots in Hyper-V oder das Wiederherstellen eines früheren Zustands geht. Das gilt insbesondere, wenn es um größere Mengen an VMs (virtuellen Maschinen) geht.

Es ist viel leichter, Hyper-V-Snapshots mit Hilfe der PowerShell zu verwalten als mit einer grafischen Oberfläche (GUI, Graphical User Interface), da sie weit flexibler ist. Sobald Sie sich mit den grundlegenden Befehlen der PowerShell auskennen, können Sie damit leicht die VMs in Ihrer virtuellen Umgebung überwachen und verändern.

Die PowerShell reduziert nicht nur die Zeit, die es normalerweise mit der GUI dauern würde, um eine Aufgabe zu erfüllen. Sie beschleunigt auch die Verarbeitung sich wiederholender Aufgaben erheblich. Wenn Sie zum Beispiel den Arbeitsspeicher in all Ihren Hyper-V-VMs kontrollieren wollen, können Sie dies mit einem schnellen PowerShell-Kommando oder -Skript viel schneller erledigen, als wenn Sie jede VM einzeln überprüfen müssten. Auch wenn Sie mit den Snapshots Ihrer VMs arbeiten wollen, funktioniert das mit der PowerShell besser als mit der GUI.

Ein Snapshot oder Checkpoint – der Name ist abhängig von der Version des von Ihnen eingesetzten Windows Servers – ist ein zu einem bestimmten Zeitpunkt erstelltes Abbild einer VM. Sie können ihn einsetzen, um die VM später wieder genauso wiederherzustellen, wie sie war, als Sie den Snapshot angelegt haben. Auf diese Weise können Sie Ihre VMs leicht wieder in den vorherigen Zustand zurückversetzen, wenn es etwa nach einem Update zu Problemen beim Starten der virtuellen Maschinen kommt.

Auf die gleiche Weise können auch Entwickler Checkpoints nutzen, um auf die Schnelle den Test einer neuen Applikation durchzuführen. Vor Windows Server 2012 R2 unterstützte Microsoft allerdings keine Snapshots im produktiven Einsatz. In dieser Version wurden die bisherigen Snapshots zu Checkpoints umbenannt. Seitdem lassen sie sich auch hervorragend in Produktivumgebungen nutzen.

PowerShell-Befehle für Snapshots und Checkpoints unter Hyper-V

Microsoft bietet mehrere Kommandozeilen-Befehle wie Checkpoint-VM, Get-VMSnapshot, Remove-VMSnapshot und Restore-VMSnapshot für die PowerShell, mit denen sich Checkpoints und Snapshots in Hyper-V anlegen und bearbeiten lassen.

Wenn Sie etwa alle Hyper-V-Snapshots abrufen wollen, die mit einer bestimmten VM zusammenhängen, nutzen Sie dazu den PowerShell-Befehl Get-VMSnapshot -VMName <VMNameHere>. Der folgende Befehl listet alle Snapshots auf, die mit der VM SQLVM zusammenhängen:

Get-VMSnapshot -VMName SQLVM

Beachten Sie dabei, dass es zwei unterschiedliche Arten von Checkpoints gibt, die Hyper-V kennt: Standard- und Produktiv-Checkpoints. Wenn Sie beispielsweise nur die Produktiv-Checkpoints einer VM benötigen, führen Sie das folgende Kommando aus:

Get-VMSnapshot -VMName SQLVM -SnapshotType Production

Um nur die Standard-Checkpoints aufzulisten, verwenden Sie den Befehl:

Get-VMSnapshot -VMName SQLVM -SnapshotType Standard

Wenn Sie neue Checkpoints für eine VM in Hyper-V erstellen wollen, dann nutzen Sie dazu den Befehl Checkpoint-VM. Um zum Beispiel einen neuen Checkpoint für eine bestimmte VM anzulegen, geben Sie den folgenden Befehl ein:

Checkpoint-VM -Name TestVM -SnapshotName TestVMSnapshot1

Das obige Kommando legt einen Checkpoint für die virtuelle Maschine TestVM auf dem lokalen Hyper-V-Server an. Es ist auch möglich, mit dem folgenden Befehl einen neuen Checkpoint einer VM auf einem entfernten Hyper-V-Server zu erstellen:

Get-VM SQLVM -ComputerName HyperVServer | Checkpoint-VM

Es gibt immer wieder Situationen, in denen Sie eine größere Zahl von Hyper-V-Checkpoints Ihrer virtuellen Maschinen auf einmal erzeugen wollen. Zum Beispiel sollten Sie erst eine komplette Serie von Checkpoints Ihrer produktiv genutzten VMs erstellen, bevor Sie ein neues Update des Betriebssystems installieren oder Ihre wesentlichen Geschäftsanwendungen aktualisieren. So stellen Sie sicher, dass Sie die VMs gegebenenfalls wiederherstellen können, um auch weiterhin den regulären Geschäftsablauf garantieren zu können. Wenn Sie aber mehrere VMs haben und dafür nur die GUI nutzen wollen, dann dauert dieser Vorgang durchaus eine längere Zeit.

$ProdVMs = "C:\Temp\ProdVMs.TXT"

Foreach ($ThisVM in Get-Content $ProdVMs)

{   

$ChkName = $ThisVM+"_BeforeUpdates"

Checkpoint-VM -Name $ThisVM -SnapshotName $ChkName

}

Write-Host "Skript zum Erstellen neuer Checkpoints Ihrer virtuellen Maschinen erfolgreich beendet."

Das obige Skript holt sich nacheinander die Namen der zu sichernden VMs aus der Datei C:\Temp\ProdVMs.TXT und führt dann das PowerShell-Kommando Checkpoint-VM aus, um die Checkpoints zu erstellen.

Um Hyper-V-Snapshots aus virtuellen Maschinen zu entfernen, nehmen Sie den Befehl Remove-VMSnapshot. Um etwa einen Snapshot namens TestSnapshot aus einer VM zu löschen, geben Sie das Folgende ein:

Get-VM SQLVM | Remove-VMSnapshot -Name TestSnapshot

Um gleich mehrere Checkpoints aus Ihren VMs zu entfernen, verwenden Sie dasselbe Skript, das Sie zum Anlegen Ihrer Checkpoints genutzt haben. Nehmen wir dazu an, dass alle VMs nach dem Einspielen der Updates wie erwartet funktionieren und Sie deswegen jetzt die erstellten Checkpoints löschen wollen. Führen Sie dazu das folgende Skript aus:

$ProdVMs = "C:\Temp\ProdVMs.TXT"

Foreach ($ThisVM in Get-Content $ProdVMs)

{   

$ChkName = $ThisVM+"_BeforeUpdates"

Get-VM $ThisVM | Remove-VMSnapshot $ChkName

}

Write-Host "Skript zum Löschen der Checkpoints Ihrer virtuellen Maschinen erfolgreich beendet."

Um einen speziellen Snapshot zu entfernen, der sich in allen Ihren VMs befindet, können Sie das folgende PowerShell-Kommando nutzen:

Get-VMSnapShot -Name BeforeUpdate | Remove-VMSnapShot

Wie Sie im Bild sehen können, gibt es zwei VMs, bei denen der Snapshot BeforeUpdate entfernt werden muss.

So entfernen Sie einen speziellen Snapshot aus all Ihren VMs.
Abbildung 1: So entfernen Sie einen speziellen Snapshot aus all Ihren VMs.

Um Hyper-V-Snapshots wiederherzustellen, greifen Sie zu dem PowerShell-Cmdlet Restore-VMSnapshot. Zum Beispiel können Sie den folgenden Befehl nutzen, um einen Snapshot einer bestimmten VM wiederherzustellen:

Restore-VMSnapshot -Name "TestSnapshot1" -VMName SQLVM -Confirm:$False 

Nehmen wir jetzt an, Ihre produktiv genutzten VMs starten nach dem Installieren der Updates doch nicht mehr und Sie wollen nun zum vorherigen Zustand Ihrer virtuellen Maschinen zurückkehren. Verwenden Sie dazu das folgende PowerShell-Skript, um diesen Vorgang durchzuführen:

$ProdVMs = "C:\Temp\ProdVMs.TXT"

Foreach ($ThisVM in Get-Content $ProdVMs)

{   

$ChkName = $ThisVM+"_BeforeUpdates"

Restore-VMSnapshot -Name $ChkName -VMName $ThisVM -Confirm:$False

}

Write-Host "Skript zum Wiederherstellen der Checkpoints Ihrer virtuellen Maschinen erfolgreich beendet."

Beachten Sie dabei, dass das Kommando normalerweise jedes Mal eine Bestätigung erfordert, wenn Sie damit einen Checkpoint in einer virtuellen Maschine wiederherstellen wollen. Das lässt sich mit dem im obigen Skript bereits enthaltenen Parameter Confirm:$False verhindern.

Folgen Sie SearchDataCenter.de auch auf Twitter, Google+, Xing und Facebook!

Nächste Schritte

Hilfreiche PowerShell-Befehle für Hyper-V

Hyper-V: Virtuelle Maschinen einrichten und ausrollen

Ressourcenmessungen in Hyper-V per PowerShell aktivieren

Erfahren Sie mehr über Serverbetriebssysteme