Moet u Hyper-V-VM’s exporteren en overzetten van de ene host naar de andere? Wat dacht u van het exporteren van een VM vanaf uw ontwikkelingswerkstation naar een Hyper-V-host in productie? Als dat het geval is, bent u hier aan het juiste adres!
In dit artikel leert u hoe u een virtuele machine exporteert en importeert met behulp van de Hyper-V Manager en PowerShell. Klaar? Laten we gaan!
Vereisten
Dit artikel zal een tutorial zijn. Als u van plan bent om stap voor stap te volgen, heeft u het volgende nodig:
- PowerShell 7 of Windows PowerShell 5.1 – Deze tutorial zal zich richten op PowerShell 7, maar de commando’s werken met Windows PowerShell 5.1.
- A Windows Server with Hyper-V enabled – This tutorial is based on the insider preview released March 2021, but any Windows Server from 2012R2 onward will suffice.
- A virtual machine guest – This tutorial is using an Alpine Linux guest because it’s light on resources. You can use any guest Operating System you like.
- A local Windows user account in the local administrators group on the Hyper-V host.
Stappen om Hyper-V-VM’s te exporteren
Als u geen fan bent van de opdrachtregel of als u slechts één VM hebt om op schijf op te slaan, is de Hyper-V Manager een goede keuze. Als u ervan uitgaat dat u op uw Hyper-V-host bent en dat u een virtuele machine hebt draaien:
1. Typ in uw Windows-zoekmenu “hyper”. De Hyper-V Manager-console zou voor u moeten verschijnen. Zo ja, klik erop om te openen.
2. Zoek de te exporteren VM, klik er met de rechtermuisknop op en klik op Exporteren.

3. Kies vervolgens een map om de VM en de configuratie op te slaan en klik op Exporteren.

De locatie die je kiest om op te slaan moet voldoende opslagruimte hebben voor de geëxporteerde VM. Dit kan variëren. Onthoud, je kunt 60 GB toewijzen voor de schijf, maar dat betekent niet dat de VM-schijf is gegroeid tot 60 GB.
Zodra Hyper-V het exportproces start, zie je de status van de export in het Hyper-V Manager-venster.

4. Bevestig nu dat alle benodigde bestanden aanwezig zijn. Je zou drie submappen moeten zien. Deze submappen bevatten alle benodigde bestanden voor de geëxporteerde VM om te starten; Snapshots, Virtuele harde schijven en Virtuele machines.

- De Snapshots map bevat momentopname-informatie voor de VM. De map kan leeg zijn als er geen momentopnamen voor de VM waren. In deze map zie je bestandsextensies VMCX, VMRS, en VMGS. Het VMCX binair bestand bevat configuratie-informatie die specifiek is voor je geëxporteerde VM. Het VMRS binair bestand bevat de VM-runtimestatusinformatie. Zonder dit bestand kan de VM niet opstarten. Als laatste is er het VMGS bestand. Niet zeker waar dit bestand voor is. Als je het weet, laat een opmerking achter.
Als je eerder ervaring hebt met Hyper-V, heb je misschien iets opgemerkt over de bestandsextensies. Vanaf Windows Server 2016 gebruikt Hyper-V geen XML-bestanden meer voor configuratie-informatie en is in plaats daarvan overgestapt op binair bestanden. Lees meer over deze nieuwe extensies.
Als uw VM meer dan één controlepunt heeft, ziet u meerdere VMCX-, VMRS- en VMGS-bestanden voor elk controlepunt dat de VM heeft.

- De map Virtual Hard Disks bevat alle harde schijfbeeldbestanden of *.vhdx voor de VM. Het bestand AVHDX of Automatische virtuele harde schijf is een verschilbestand dat wordt gebruikt voor virtuele machinecontrolepunten. Als uw virtuele machine meer dan één controlepunt heeft, ziet u meerdere AVHDX-bestanden.

- De map Virtual Machines bevat de VM-configuratiebestanden die worden gebruikt om de VM op te starten. Net als in de Snapshots-map ziet u hier ook VMCX-, VMRS- en VMGS-binair bestanden.

Als alle drie de mappen aanwezig zijn en bestanden bevatten, is uw export succesvol geweest.
Het exporteren van een VM met PowerShell
Als u een fan bent van de commandoregel of veel VM’s moet exporteren, is het gebruik van PowerShell om een VM te exporteren ook een uitstekende optie. Gebruik voor het exporteren van een Hyper-V met PowerShell de Export-VM
-cmdlet. Doe dit, ervan uitgaande dat u zich op uw Hyper-V-host bevindt en uw VM is offline:
1. Open een PowerShell-console.
2. Vraag de Hyper-V-host om een inventaris van uw VM’s en de naam van de te exporteren VM. Deze handleiding exporteert een VM genaamd Alpine Linux 01
.

Export-VM
command3. Maak een map aan om de VM naar te exporteren. Deze handleiding exporteert de VM naar C:\Export_VM.
4. Exporteer nu de VM met behulp van de Export-VM
cmdlet waarbij de naam van de virtuele machine wordt opgegeven voor de Name
-parameter, het Pad
naar de map om het op te slaan, en de PassThru
-parameter.
De
PassThru
-parameter is optioneel om het geëxporteerde VM-object terug te krijgen. Anders geeftExport-VM
geen uitvoer.

Als een VM wordt uitgevoerd, slaat
Export-VM
niet automatisch het geheugen op. Als je de inhoud van het geheugen dat in de VM wordt uitgevoerd wilt opslaan, gebruik dan de-CaptureLiveState CaptureSavedState
-parameter metExport-VM
. Lees meer over de technologie die wordt gebruikt om het geheugen vast te leggen.
5. Verwijder nu de VM uit Hyper-V. Maak je geen zorgen! Je hebt het opgeslagen!
Het gebruik van Hyper-V Manager om een VM te importeren
Zodra je de VM hebt geëxporteerd, heeft zich een ramp voltrokken en is de VM verdwenen. Geen zorgen! Je hebt het al naar de schijf geëxporteerd. Laten we het terughalen. Om dit te doen, ga ervan uit dat je weer op je Hyper-V-host bent:
1. Open Hyper-V Manager.
2. Klik op het menu-item Virtual Machine Importeren aan de rechterkant van het Hyper-V Manager-venster. Je wordt gepresenteerd met de Importeer virtuele machine-wizard. Klik op Volgende.

3. Voer vervolgens het pad in naar de geëxporteerde virtuele machine die je wilt importeren en klik op Volgende. Voor deze handleiding is de VM opgeslagen in C:\Export_VM\Alpine Linux 01.
Anders dan bij het importeren met PowerShell, zal de wizard het VMCX-bestand van de VM voor je lokaliseren.

4. Zodra Hyper-V de VM-configuratiebestanden ontdekt binnen de map (in dit voorbeeld, C:\Geëxporteerde_VM\Alpine Linux 01\Virtual Machines\), zal Hyper-V je vragen om een virtuele machine te selecteren om te importeren. Kies de VM die je wilt importeren en klik op Volgende.

5. Kies vervolgens het type import dat je wilt uitvoeren. Laten we eerst de opties wat nader bekijken.
Wanneer je de optie ‘Registreer de virtuele machine ter plaatse (gebruik bestaand uniek ID)’ kiest, ga je ervan uit dat de geëxporteerde VM-bestanden zich op hun definitieve locatie bevinden, wat betekent dat je de VM niet verplaatst naar een nieuwe map. De geëxporteerde VM-bestanden worden de actieve status van de virtuele machine. Het UID verandert niet.
Het UID is wat Hyper-V gebruikt om een virtuele machine te identificeren. Als Hyper-V detecteert dat hetzelfde UID momenteel geregistreerd is, ontvang je een foutmelding.
Als je de virtuele machine herstelt, kun je een locatie kiezen of de standaard Hyper-V-locatie gebruiken voor het kopiëren van de geëxporteerde VM-bestanden.
Wanneer je de virtuele machine kopieert, is het vergelijkbaar met het herstellen van een geëxporteerde VM, maar met een nieuw uniek ID (UID). Een nieuw UID maakt het mogelijk om dezelfde virtuele machine meerdere keren te implementeren naar dezelfde of verschillende Hyper-V-hosts.
Voor de demonstratie, laten we de Import Type selecteren Kopieer de virtuele machine. Het kopiëren van de VM genereert een nieuw uniek ID (UID). Elke Hyper-V VM wordt geïdentificeerd door een UID. Deze optie is prima voor nu, dus klik op Volgende.

6. Aangezien je de Kopieer optie hebt gekozen, kun je de locatie wijzigen waar de bestanden van de virtuele machine worden opgeslagen. Klik op Volgende om de standaardinstellingen voor deze tutorial te accepteren.

7. Kies ten slotte een locatie voor de VM die bekend staat als een Opslagmap. De Opslagmap is waar de VHDX- en AVHDX-bestanden zullen worden opgeslagen. Accepteer voor deze tutorial de standaardlocatie en klik op Volgende.

8. Bekijk de samenvattingspagina en klik op Voltooien wanneer je er klaar voor bent om de import te starten.

Wanneer Hyper-V de import voltooit, keert het terug naar het Hyper-V Manager-venster, en je zult nu de geïmporteerde VM zien, zoals hieronder wordt weergegeven.

Het gebruik van PowerShell om een VM te importeren
Als het importeren van een VM via de Hyper-V Manager niet jouw ding is, geen probleem. Gebruik PowerShell! Om een VM met PowerShell te importeren, zul je de Import-VM cmdlet gebruiken. Overweeg het volgende scenario:
U hebt een VM geëxporteerd, en deze staat in C:\Exported_VM\, laten we zeggen dat deze per ongeluk is verwijderd, of misschien is deze nodig op een ander Hyper-V-host? Omdat deze al geëxporteerd is, is deze in feite geback-upt en kan deze eenvoudig worden geïmporteerd, waardoor de VM wordt hersteld.
Als de Export-VM
een VM op schijf opslaat, doet de Import-VM
cmdlet het tegenovergestelde; het leest een VM van schijf en importeert deze in Hyper-V.
1. Ga ervan uit dat u al een PowerShell-console open hebt en dat u zich in de map bevindt waar u een VM hebt geëxporteerd (C:\Exported_VM). Voer eerst de Get-ChildItem
cmdlet uit met de Recurse
switch om alle bestanden op te sommen en maak een notitie van de bestandsnaam met de *.vmcx-extensie met de volgende code:
U kunt meerdere .vmcx-bestanden zien, afhankelijk van het feit of de geëxporteerde VM momentopnamen had. Het enige wat u nodig heeft om de VM te starten is het VMCX-bestand dat zich in de map Virtual Machines bevindt.
U ziet mogelijk een uitvoer vergelijkbaar met het onderstaande voorbeeld:

2. Gebruik vervolgens de Import-VM
cmdlet met de Path
parameter om het configuratiebestand van de VM op te geven (verkregen in de vorige stap).
Dat is het! U hebt de VM op de juiste plaats geregistreerd, met dezelfde UID als de VM had bij exporteren.

3. Controleer nu of de UID hetzelfde is als .vmcx-bestandsnaam toen de VM werd geëxporteerd. U kunt de onderstaande code gebruiken om dit te doen door WMI te bevragen:
Je zou een vergelijkbare uitvoer moeten zien als het voorbeeld hieronder:

Het bovenstaande voorbeeld was een directe import uit het VM-configuratiebestand, en de VM behield de oorspronkelijke UID. In een productieomgeving wil je mogelijk een nieuwe UID genereren om te voorkomen dat een oude VM wordt aangezien voor een nieuwe VM. Daar komt de parameter Kopie
van pas.
Het importeren van een virtuele machine met de parameter
Kopie
kopieert de bestanden van de oorspronkelijke locatie (C:\Geëxporteerde_VM\) naar de geconfigureerde paden van de Hyper-V-server. Wanneer het wordt gebruikt metNieuwIdGenereren
, kan de VM meerdere keren worden geïmporteerd op dezelfde Hyper-V-server met een nieuw uniek identificatienummer (UID).
Deze keer bevat de geïmporteerde VM niet dezelfde UID als bij exporteren. Je ziet de oude en nieuwe UIDs in de onderstaande screenshot:

Hyper-V kopieert de VM nu naar de standaard paden die je eerder hebt gezien bij het importeren van een VM met Hyper-V Manager, maar geeft de VM een nieuwe UID.
Volgende stappen
In deze handleiding heb je geleerd hoe je een Hyper-V-VM exporteert en importeert met behulp van PowerShell en de ingebouwde Hyper-V-beheerder.
Nu je weet hoe je Hyper-V virtuele machines exporteert en importeert, probeer dan Automatische Virtuele Machine Activering (AVMA) in te stellen om Windows Server virtuele machines te activeren die worden gehost op Hyper-V.