Virtuelle Computer von Hyper-V mit der Windows PowerShell exportieren und importieren

Mehr Möglichkeiten zum exportieren und importieren von Hyper-V Maschinen durch die PowerShell

Überblick

Nicht nur mit dem Hyper-V Manager kann man virtuelle Computer exportieren. Selbstverständlich bietet auch die Windows PowerShell ein passendes Cmdlet an. Gerade die PowerShell hat natürlich den Vorteil der Automatisierung. So könnte man ein Script erstellen, welches in regelmäßigen Abständen die bzw. den virtuellen Computer exportiert.

Exportieren des virtuellen Computers

Das Cmdlet zum exportieren heißt Export-VM. Sofern man den Namen des virtuellen PC´s kennt, kann man direkt mit Export-VM und den entsprechenden Optionen (Name der VM, Export Pfad, etc.) die Maschine exportieren. Welche VM´s auf dem System vorhanden sind liefert das Cmdlet Get-VM.

Get-VM

Export-VM vSV16Core -Path F:\Backups
Virtuelle Maschinen aus Hyper-V per PowerShell exportieren: Auflisten der VM´s
Virtuelle Maschinen aus Hyper-V per PowerShell exportieren: Auflisten der VM´s
Virtuelle Maschinen aus Hyper-V per PowerShell exportieren: VM exportieren
Virtuelle Maschinen aus Hyper-V per PowerShell exportieren: VM exportieren

Man kann auch alle vorhandenen virtuellen Computer gleichzeitig Exportieren. Hierzu lässt man alle VM´s auflisten und leitet sie anhand der Pipe weiter zum Cmdlet für das Exportieren. Dieses Szenario wäre z.B. eines, welches nicht mit dem Hyper-V Manager möglich ist. D.h. hier zeigt sich wieder der große Vorteil der Windows PowerShell.

Get-VM | Export-VM -Path F:\Backups
Virtuelle Maschinen aus Hyper-V per PowerShell exportieren: Alle VM´s exportieren
Virtuelle Maschinen aus Hyper-V per PowerShell exportieren: Alle VM´s exportieren

Importieren des virtuellen Computers

Für das Importieren von virtuellen Computern gibt es das Cmdlet Import-VM. Natürlich muss man auch hier die drei verschiedenen Arten des Importvorgangs unterscheiden. Wie bereits im Artikel zum importeren per Hyper-V Manager erläutert sind dies die folgenden:

  1. Direktes Registrieren
  2. Virtuellen Computer wiederherstellen
  3. Virtuellen Computer kopieren

Was man unbedingt zum importieren benötigt, ist der Name der .vmcx Datei. Dazu wechselt man am besten im Backup Verzeichnis des Virtuellen Computers in den Ordner Virtual Machines.

Virtuelle Maschinen aus Hyper-V per PowerShell importieren: VM importieren
Virtuelle Maschinen aus Hyper-V per PowerShell importieren: VM importieren

zu 1:

Hier wird der Speicherort des Backup Pfades verwendet auch die ID des virtuellen Computers bleibt gleich. Dieser Import Vorgang funktioniert natürlich nur, wenn der PC nicht schon im Hyper-V registriert ist. Das heißt sollte er vorhanden sein, so muss er vorher gelöscht werden.

Import-VM -Path 'F:\Backups\vSV16Core\Virtual Machines\1FB3A67F-E0E0-48B8-BDF9-7EEC12CEFEF1.vmcx'

zu 2:

Möchte man den virtuellen Computer an einem neuen Speicherort wiederherstellen, so benötigt man noch zusätzlich einige Parameter wie u.a. die Cmdlets, Copy,  VhdDestinationPath, VirtualMachinePath. Nicht vergessen, es wird bei dieser Art des Imports noch keine neue ID erzeugt.

Import-VM -Path 'F:\Backups\vSV16Core\Virtual Machines\1FB3A67F-E0E0-48B8-BDF9-7EEC12CEFEF1.vmcx' -Copy -VhdDestinationPath 'C:\Backups\vSV16Core\Virtual Hard Disks' -VirtualMachinePath 'C:\Backups\vSV16Core\Virtual Machines'

zu 3:

Bei dieser Art des importierens, wird zusätzlich noch einen neue  ID für den virtuellen Computer erstellt. Man erreicht das mit dem Cmdlet -GenerateNewId.

Import-VM -Path 'F:\Backups\vSV16Core\Virtual Machines\1FB3A67F-E0E0-48B8-BDF9-7EEC12CEFEF1.vmcx' -Copy -GenerateNewId

Fazit

Ganz klar liegt der Vorteil bei der PowerShell darin, dass man das Exportieren sowie auch Importieren automatisieren kann. Denkbar wäre z.B. ein Backupscript, welches in regelmäßigen Abständen einen Export der virtuellen Computer durchführt. Die Automatisierung könnte man dadurch erreichen, dass man einen Task in der Aufgabenplanung erstellt. Oder eine andere Alternative wäre ein Startscript. Also wie man sieht ergeben sich mit der PowerShell viel mehr Alternativen als wie mit der GUI.

Tolles Buch