Als je Microsoft’s Hyper-V virtualisatieplatform gebruikt om virtuele machines te draaien, ben je waarschijnlijk bekend met het gebruik van de Hyper-V Manager. Maar wist je dat je meer gedaan kunt krijgen in minder tijd met de Hyper-V PowerShell-module?
In deze tutorial ga je leren hoe je Hyper-V VM’s beheert met PowerShell, inclusief het maken, verwijderen en je gaat ook aan de slag met VM-snapshots!
Vereisten
Voor deze tutorial heb je het volgende nodig:
- A Windows client to connect to a remote Hyper-V host. This tutorial uses Windows 10 Pro.
- A Hyper-V host with PowerShell Remoting enabled. The tutorial’s Hyper-V host is named HYPER and is in a workgroup but an Active-Directory joined client and host will work as well.
- A user account on the Hyper-V host in the local administrators group or in the Hyper-V Administrators group. This tutorial will use an account called localadmin.
Verbinding maken met een externe Hyper-V Host
Om met Hyper-V op PowerShell te werken, moet je op de een of andere manier kunnen communiceren met de Hyper-V host. Je kunt dit lokaal doen door de Hyper-V PowerShell-cmdlets uit te voeren met de naam van de Hyper-V host, of je kunt PowerShell Remoting gebruiken om verbinding te maken met de Hyper-V host zelf.
In deze tutorial maak je een blijvende verbinding met de Hyper-V host en voer je de commando’s uit op de Hyper-V host zelf.
1. Open PowerShell op je lokale computer.
2. Voer het Enter-PSSession
cmdlet uit en geef de hostnaam op van je externe Hyper-V-host voor de ComputerName
-parameter. Deze actie maakt een interactieve sessie en stelt je in staat om interactief commando’s uit te voeren op de externe Hyper-V-host.
Als je client en Hyper-V-host lid zijn van hetzelfde Active Directory-domein, hoef je de
Credential
-parameter niet te gebruiken.
3. Je wordt vervolgens gevraagd om een gebruikersnaam en wachtwoord op te geven om verbinding te maken met de Hyper-V-host. Deze gebruikersnaam en wachtwoord zijn van een lokale beheerder op de externe host. Zodra je verbonden bent, zou je je PowerShell-prompt moeten zien veranderen om de hostnaam van de Hyper-V-host weer te geven.
Je bent nu klaar om commando’s uit te voeren!
Het maken van Hyper-V-VM’s met PowerShell
Assumeer dat je nu verbonden bent met je Hyper-V-host via PowerShell Remoting, laten we beginnen met het uitvoeren van commando’s door een Hyper-V-VM te maken.
Het maken van een eenvoudige VM
Terwijl je in je PSRemoting-sessie verbonden bent met de externe Hyper-V-host:
Voer het New-VM
cmdlet uit om een nieuwe VM te maken. Bij het maken van een VM met het New-VM
cmdlet, heb je vele verschillende opties om uit te kiezen over hoe je het wilt maken.
1. In dit voorbeeld hieronder maakt de tutorial een VM met:
- A name of MyVM (
HYPER
) - 512MB RAM (
MemoryStartupBytes
)

Het maken van een VM op basis van andere VM-attributen
Soms moet je een VM maken met vergelijkbare kenmerken als een andere VM. Dat kun je doen door verschillende VM-eigenschappen toe te wijzen aan variabelen en die variabelen te gebruiken bij het maken van de nieuwe VM. Als voorbeeld:
1. Voer Get-VM
uit om de eigenschappen van een bestaande VM op te vragen en wijs de uitvoer toe aan een variabele zoals hieronder wordt getoond.
2. Voer de cmdlet Get-VMMemory
uit met de naam van de VM om eigenschappen op te halen (in dit geval geheugen) en wijs de geheugenwaarde toe aan een variabele.
3. Maak vervolgens een nieuwe VM met de cmdlet New-VM
, geef de Name
, VM-generatie (Generation
) op met behulp van de Generation
-eigenschap van de andere VM, en de hoeveelheid geheugen met de waarde verkregen van de andere VM.

Bestaande VM’s weergeven met PowerShell
Nu je ten minste twee VM’s hebt gemaakt op de Hyper-V-host, laten we verkennen hoe je gemaakte VM’s kunt opsommen. Om dat te doen:
1. Voer de cmdlet Get-VM
op zichzelf uit. Wanneer je zonder parameters uitvoert, vraagt Get-VM
de Hyper-V-host om alle bestaande VM’s. Get-VM

2. Misschien wil je alleen zoeken naar een enkele VM. Gebruik in dat geval de parameter -Name
. De onderstaande opdracht zoekt bijvoorbeeld in Hyper-V naar de eerder gemaakte VM met de naam HYPER_old
. Get-VM -Name HYPER_old

Misschien moet je vervolgens alle VM’s vinden die zich in een specifieke State
bevinden. Geen probleem. Voer Get-VM
uit, wat alle VM’s ophaalt, maar leid de uitvoer naar de cmdlet Where-Object
.
In het onderstaande voorbeeld beperkt het pijp-teken ‘|’ de uitvoer van Get-VM
tot alleen die VM-objecten met een State
van Running
. Get-VM -VMName HYPER_old | Where-Object {$_.State -eq 'Running'}

Starten en Stoppen van VM’s
Op dit moment is de VM die eerder is aangemaakt waarschijnlijk gestopt. Laten we dat veranderen door deze te starten en vervolgens te leren hoe we ook VM’s kunnen stoppen.
In de PowerShell-sessie van de externe Hyper-V-host:
1. Voer het cmdlet Start-VM
uit met opgave van de naam (Name
) van de eerder aangemaakte VM met de parameter -Name

Nu de VM is gestart, stop deze door het cmdlet Stop-VM
te gebruiken met opgave van de naam van de VM met de parameter Name
.
Zodra je het bovenstaande commando uitvoert, zie je de VM afsluiten zoals te zien is in de onderstaande schermafbeelding;

Hyper-V VM’s Aanpassen
VM’s blijven niet altijd hetzelfde. Misschien moet je de CPU-resources verhogen, of de VM heeft consequent geheugenproblemen. In dat geval is het cmdlet Set-VM
je vriend.
Als voorbeeld van het aanpassen van bestaande VM’s, in de PowerShell-sessie van de externe Hyper-V-host:
Voer het Set-VM
-cmdlet uit om de HYPER_old-VM die momenteel wordt uitgevoerd automatisch af te sluiten. Gebruik de Name
-parameter om de VM aan te geven die je wilt instellen en specificeer Shutdown
als de waarde voor de AutomaticStopAction
-parameter om ervoor te zorgen dat de VM automatisch correct wordt afgesloten wanneer de Hyper-V-host wordt afgesloten.
Opslaan van Hyper-V VM’s
In de externe PowerShell-sessie van de Hyper-V-host moet je mogelijk de VM die je hebt gemaakt opslaan om de staat van het VM-geheugen voor later gebruik te behouden. Gebruik hiervoor het Save-VM
-cmdlet met de Name
-parameter waarbij je de naam van de VM opgeeft die je wilt opslaan.
Merk op dat de VM die je wilt opslaan, zich in een actieve status moet bevinden.

Beheren van Hyper-V VM Checkpoints
Als je de bestaande status van een VM wilt opslaan voordat je wijzigingen aanbrengt of VM-wijzigingen ongedaan wilt maken, moet je meer weten over checkpoints. Checkpoints zijn een handige manier om snel de schijf- en geheugenstatus van een Hyper-V VM op te slaan.
Terwijl je op je Hyper-V-host bent, voer het Checkpoint-VM
-cmdlet uit, waarbij je de naam van de VM opgeeft om op te slaan en een naam voor de checkpoint.
De parameter naam,
SnapshotName
, verwijst nog steeds naar de oude terminologie die werd gebruikt in Hyper-V 2012. Een snapshot is hetzelfde als een checkpoint.

Zodra u een controlepunt heeft gemaakt, kunt u vervolgens de Get-VMSnapshot
cmdlet gebruiken om alle snapshots opgeslagen op de Hyper-V host op te halen. U kunt hieronder zien dat de VM HYPER_old drie controlepunten heeft.

Conclusie
Als u alle demonstraties in deze tutorial heeft doorlopen, bent u goed op weg om Hyper-V VM’s te beheren met PowerShell. U zou nu de benodigde kennis moeten hebben om 1, 10 of zelfs 100 VM’s te beheren!
Welke soort taken denkt u dat u nu kunt automatiseren met PowerShell en Hyper-V?