PowerShell und Hyper-V mit Server 2012

In den beiden Blogeinträgen [1] und [2] habe ich das Verwalten einer Testumgebung mit Hyper-V unter Server 2008R2 genauer beschrieben. Hierfür waren externe Hyper-V Module nötig.Mit Server 2012 hat Microsoft nun viele hilfreiche PowerShell Befehle direkt mitgeliefert.

Im folgenden werden wir uns mit 2 Szenarien genauer beschäftigen:

  • Erstellen und umbenennen von Snapshots

  • Reset der Umgebung

Snapshots

Das Erstellen von Snapshots unter Server 2012 funktioniert mit dem Befehl Checkpoint-VM Um eine funktionierende Umgebung zu sichern, gehen wir wie folgt vor:

  1. Mit dem Befehl Stop-VM NAME -force fahren wir alle VMs in der korrekten Reihenfolge runter. -force bedeutet hier lediglich, dass das Herunterfahren erzwungen wird. (ist gleichbedeutend mit dem Klick eines Benutzers auf Herunterfahren erzwingen). Falls mehrere Stop-VM Befehle hintereinander ausgeführt werden, wartet der Befehl automatisch, bis die VM den Zustand Stopped erreicht hat.

  2. Mit Get-VM NAME | Checkpoint-VM -Snapshotname S_NAME wird der Snapshot der entsprechenden VM erstellt und direkt umbenannt. Als S_NAME kann hier ein beliebiger String verwendet werden. Bei der Verwendung von Leerzeichen, sollte man allerdings Anführungszeichen verwenden.

  3. Mit Start-VM NAME starten wir die VMs wieder in der korrekten Reihenfolge. Über Start-Sleep -s 30 kann man beim Hochfahren 30 Sekunden bis zum nächsten Befehl warten.

Reset

Um eine VM auf einen vorhandenen Snapshot zurück zu setzen gibt es den Befehl Restore-VMSnapshot Um eine Umgebung zurück zu setzen, gehen wir wie folgt vor:

  1. Über Stop-VM NAME -force -TurnOff schalten wir die VM ab. -force -TurnOff erzwingt hier ein direktes ausschalten der VM, ohne Herunterfahren.

  2. Restore-VMSnapshot -Name S_NAME -VMName NAME -Confirm:$false stellt den Snapshot S_NAME wieder her. -Confirm:$false bewirkt, dass man nicht gefragt wird, ob man dies wirklich tun will.

  3. Nun kann man wie oben über Start-VM die VMs wieder in der richtigen Reihenfolge starten.

[1] https://www.escde.net/blog/verwaltung-einer-hyper-v-testumgebung-via-powershell-teil-1-reset?rq=Verwaltung%20einer%20Hyper-V
[2] https://www.escde.net/blog/verwaltung-einer-hyper-v-testumgebung-via-powershell-teil-2-snapshot-erstellen?rq=Verwaltung%20einer%20Hyper-V