Hyper-V virtuele machines beheren met PowerShell

Het beheren van Hyper-V virtuele machines via PowerShell is een ware uitkomst als je het eenmaal onder de knie hebt. Als het configureren en beheren van VM’s via de grafische gebruikersinterface (GUI) omslachtig aanvoelt, kunnen PowerShell-opdrachten veel routinehandelingen stroomlijnen – denk aan het aanmaken van VM’s, netwerkswitches, snapshots, noem maar op. Bovendien is het scripten van deze taken erg handig als je implementaties of updates automatiseert. Maar ja, soms is het lastig om te weten welke opdrachten precies werken, vooral met alle verschillende Windows-versies en Hyper-V-configuraties die er zijn. Daarom volgt hier een overzicht van wat je doorgaans nodig hebt en enkele tips gebaseerd op praktijkvoorbeelden. Het is misschien wat rommelig, maar het werkt wel. Je zult vertrouwd raken met commando’s zoals `Install-WindowsFeature`, `New-VMSwitch`, `New-VM` en alle VM-besturingscommando’s zoals `Start-VM`, `Stop-VM`, enzovoort. Houd er ook rekening mee dat paden, netwerkadapternamen en VM-namen cruciaal zijn, anders werken de scripts niet. Als dingen niet werken zoals verwacht, kan een herstart of het opnieuw inschakelen van functies soms helpen, omdat Windows het graag ingewikkelder maakt dan nodig. Nu verder met de stappen…

Hoe Hyper-V VM’s te beheren via PowerShell

Schakel de Hyper-V-rol in op uw server of desktop.

Als je Hyper-V-configuratie niet werkt – misschien heb je net Windows geïnstalleerd of is het een nieuwe installatie – moet je die rol eerst inschakelen. Voor Windows Server is het commando:

Install-WindowsFeature -Name Hyper-V -IncludeManagementTools -Restart

Op Windows 10/11 is het iets anders, en doe je het meestal ook via PowerShell:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V –All

Met dit commando start u de installatie van de functie. Op sommige systemen kan er om een ​​herstart worden gevraagd, dus houd daar rekening mee. Let op: zorg ervoor dat uw CPU virtualisatie ondersteunt (Intel VT-x of AMD-V) en dat virtualisatie is ingeschakeld in de BIOS. Anders werkt niets. U kunt controleren of virtualisatie is ingeschakeld met ` systeminfo` in de opdrachtprompt of PowerShell.

Controleer of Hyper-V actief is en of je klaar bent om te beginnen.

Eerlijk gezegd is het soms onduidelijk of Hyper-V wel correct is geïnstalleerd. Voer het volgende commando uit:

Get-Command -Module hyper-v

Als er geen opdrachten worden weergegeven, is Hyper-V niet gereed. U kunt de hostinformatie van Hyper-V ook controleren met:

Get-VMHost|fl *

Of controleer je CPU-informatie met:

Get-ComputerInfo -Property "CsNumberOfLogicalProcessors", "CsTotalPhysicalMemory"

Als de commando’s werken, kunt u beginnen met het maken en beheren van virtuele machines.

Maak een virtuele switch aan voor netwerktoegang.

Het aanmaken van die virtuele switch is meestal de eerste stap bij het instellen van een netwerk. Maak eerst een lijst van je netwerkadapters:

Get-NetAdapter | where {$_.status -eq "up"}

Identificeer de juiste, meestal genaamd “Ethernet” of iets dergelijks. Als uw hardware SR-IOV ondersteunt (afhankelijk van uw netwerkkaart), moet u dat op de switch inschakelen – maar dat is een onderwerp op zich. Om een ​​externe switch te creëren die uw fysieke netwerkkaart overbrugt, voert u iets dergelijks uit:

New-VMSwitch -Name "ExternalVMSwitch" -AllowManagementOS $True -NetAdapterName "Ethernet0" -SwitchType External

Vervang “Ethernet0” door de daadwerkelijke naam van uw interface. Soms mislukt het aanmaken van de switch als de adapter in gebruik is of verkeerd geconfigureerd is. Controleer daarom of de adapter actief is en niet op iets vreemds is aangesloten.

Een virtuele machine bouwen met PowerShell

Nu wordt het leuk. Om snel een virtuele machine op te zetten, doe je het volgende:

$VMName = "mun-prx2" $VMConfig = @{ Name = $VMName MemoryStartupBytes = 1GB Generation = 2 Path = "E:\HV\$VMName" SwitchName = "ExternalVMSwitch" } New-VM @VMConfig # And create a virtual disk if you haven’t yet: New-VHD -Path "E:\HV\$VMName\$VMName.vhdx" -SizeBytes 10GB # Attach that disk: Add-VMHardDiskDrive -VMName $VMName -Path "E:\HV\$VMName\$VMName.vhdx" 

Hiermee wordt een Gen 2 VM aangemaakt met 1 GB RAM (om te beginnen) en een virtuele schijf van 10 GB. Je kunt de timings en groottes naar behoefte aanpassen. Soms krijg je fouten als paden niet bestaan ​​of als de machtigingen onjuist zijn. Controleer daarom goed of je mappen beschrijfbaar zijn en bestaan ​​voordat je het programma uitvoert.

VM-instellingen direct aanpassen

Als je meer geheugen of CPU’s nodig hebt, gebruik dan commando’s zoals:

Get-VM -Name "mun-prx2" | Set-VMMemory -StartupBytes 2GB Set-VMProcessor -VMName "mun-prx2" -Count 2 

Deze opties zijn handig als je merkt dat je virtuele machine te weinig rekenkracht heeft of meer resources nodig heeft. Houd er rekening mee dat sommige wijzigingen het afsluiten of herstarten van de virtuele machine vereisen, dus plan dit van tevoren.

Beheer virtuele machines: starten, stoppen, opslaan en momentopnamen maken

Een VM starten: `Start-VM -Name “mun-prx2″` — spreekt voor zich. Veilig afsluiten: `Stop-VM -Name “mun-prx2″` (zorg ervoor dat Integration Services actief zijn in het gastbesturingssysteem voor een correcte afsluiting).Om de VM direct uit te schakelen (geforceerde afsluiting):

Stop-VM -Name "mun-prx2" -TurnOff

Momentopnamen maken (controlepunten):

Checkpoint-VM -VMName "mun-prx2" -SnapshotName "Before major changes"

Het terugzetten naar een momentopname kan veel problemen ongedaan maken als er iets misgaat:

Restore-VMCheckpoint -VMName "mun-prx2" -Name "Before major changes" -Confirm:$false 

Extra tips — Virtuele machines verplaatsen, de grootte ervan aanpassen en exporteren

Als je een virtuele machine naar een andere schijf wilt verplaatsen, is dit commando handig:

Move-VMStorage -VMName "mun-prx2" -DestinationStoragePath "D:\VMs"

Het wijzigen van de grootte van virtuele schijven is lastig, maar wel mogelijk met:

Resize-VHD -Path 'E:\HV\mun-prx2\mun-prx2.vhdx' -SizeBytes 50GB

En als je virtuele machines wilt back-uppen of klonen, exporteer ze dan eerst:

Export-VM -Name "mun-prx2" -Path "C:\VHD\export"

Later kun je vanuit die export importeren of klonen.

Gast-IP-adressen verkrijgen en verbinding maken met virtuele machines

Om te zien welk IP-adres uw gastbesturingssysteem gebruikt (ervan uitgaande dat het DHCP is en de netwerkconfiguratie dit toelaat):

Get-VM | Select -ExpandProperty NetworkAdapters | Select VMName, IPAddresses, Status

En om verbinding te maken met de console van een virtuele machine, gebruikt u:

vmconnect.exe localhost mun-prx2

Voor meer geavanceerde functies zoals PowerShell Direct, waarmee u opdrachten rechtstreeks in de virtuele machine kunt uitvoeren zonder netwerkconfiguratie, gebruikt u:

Invoke-Command -VMName mun-prx2 -ScriptBlock {Get-Process} Enter-PSSession -VMName mun-prx2

En het kopiëren van bestanden kan met:

$session = New-PSSession -VMName mun-prx2 -Credential (Get-Credential) Copy-Item -ToSession $session -Path E:\ISO\install.iso -Destination D:\ISO

Ja, het lijkt misschien veel, maar als je het eenmaal door hebt, is het beheren van Hyper-V vanuit PowerShell een fantastische manier om snel meerdere virtuele machines te beheren. Vergeet alleen niet om je paden, VM-namen en netwerkadapters te controleren – daar gaat het meestal mis.

Samenvatting

  • Hyper-V inschakelen met PowerShell — zowel op Windows Server als op clientversies.
  • Maak virtuele switches aan op basis van uw netwerkadapters.
  • Implementeer nieuwe VM’s met `New-VM`, stel resources in en koppel schijven.
  • Beheer de status van virtuele machines met start-/stopfuncties, snapshots en export-/importfuncties.
  • Gebruik PowerShell Direct voor beheer van virtuele machines zonder gedoe met het netwerk.

Samenvatting

Het beheren van Hyper-V via PowerShell kan in eerste instantie overweldigend lijken, vooral als paden of commando’s zich niet helemaal gedragen zoals verwacht. Soms is het gewoon een kwestie van herstarten of het aanpassen van machtigingen. Maar met een beetje geduld is het een krachtige manier om je VM-omgeving onder controle te houden zonder constant door grafische interfaces te hoeven klikken. Hopelijk helpt dit je, al is het maar om een ​​paar taken te automatiseren of je VM sneller in te stellen.