Wer unter Windows mit Virtualisierung arbeitet, wird früher oder später Aufgaben automatisieren. PowerShell und Hyper-V eignen sich dafür perfekt : Vom Starten und Herunterfahren virtueller Maschinen über deren Export und die Ressourcenmessung bis hin zur Erstellung virtueller Netzwerke lässt sich alles orchestrieren, ohne die grafische Konsole zu öffnen.
Im Folgenden zeigen wir Ihnen anhand von Beispielen und Best Practices, wie Sie Hyper-V mit PowerShell umfassend verwalten . Sie lernen wichtige Befehle, die Erstellung und Konfiguration von VMs, Export und Import, Massenfilterung, Metriken, Netzwerk- und Speicherfunktionen sowie nützliche Skripte zur Statusberichterstattung Ihrer Plattform und zu Backup-Optionen kennen – für mehr Sicherheit und Zuverlässigkeit.
Was ist PowerShell und warum sollte man es mit Hyper‑V verwenden?
PowerShell ist Microsofts .NET-basiertes Automatisierungs- und Skripting-Framework. Es kombiniert einen Befehlsinterpreter mit einer leistungsstarken Skriptsprache und eignet sich ideal für die Administration unter Windows, macOS und Linux.
Die Befehle (Cmdlets) ermöglichen das Verketten von Aktionen und das Erstellen wiederverwendbarer Skripte. Microsoft stellt Hunderte von Basis-Cmdlets bereit , und mit dem Hyper-V-Modul steht Ihnen alles zur Verfügung, was Sie zum Verwalten von Hosts, VMs, Netzwerken und Speichern über die Konsole benötigen.

So öffnen und verwenden Sie PowerShell auf Hyper‑V-Hosts
Wenn der Host über eine grafische Benutzeroberfläche verfügt, öffnen Sie das Startmenü, suchen Sie nach PowerShell und wählen Sie „Als Administrator ausführen “. Bei Server Core- oder Hyper-V Server-Installationen geben Sie powershell in der Eingabeaufforderung ein, um eine PowerShell-Sitzung zu starten.
Für den Fernzugriff über Remote Desktop auf Server Core verwenden Sie sconfig (Option 7). Um zur Konsole zurückzukehren, wählen Sie Option 15 und gelangen so zu cmd.exe . Aktivieren Sie RDP auf dem Host, mit dem Sie die Verbindung herstellen möchten.
Die Fernadministration ohne RDP ist noch komfortabler: Installieren Sie die Tools auf Ihrer Workstation mit Install-WindowsFeature RSAT-Hyper-V-Tools und fügen Sie den Cmdlets (Get-VM, Start-VM usw.) den Parameter -ComputerName hinzu, um auf dem Zielhost zu arbeiten. So können Sie mehrere Hosts verwalten, ohne zwischen Remote-Desktops wechseln zu müssen.
Wichtige Hyper‑V‑Cmdlets mit Beispielen
Wenn Sie sich nicht an einen Befehl oder seine Syntax erinnern, schlagen Sie im Katalog nach. Get-Command listet verfügbare Cmdlets, Funktionen und Aliase auf, und Sie können nach Muster filtern:
Get-Command -Module Hyper-V
Get-Command *-VM
Get-Command *-VHD*
Hilfe, Beispiele und Parameter finden Sie in der Get-Help-Funktion, die die Syntax erläutert und sogar praktische Beispiele zeigt:
Get-Help Get-VM
VM-Inventar und Lebenszyklus
Um VMs auf dem lokalen oder Remote-Host anzuzeigen, ist Get-VM der erste Schritt :
Get-VM
Get-VM -ComputerName Server1
Starten Sie bestimmte VMs oder Batches. Sie können Platzhalter im Namen verwenden:
Start-VM -Name 'Windows Server 2016'
Start-VM -Name 'Hyper-V*'
Fährt ordnungsgemäß herunter (oder erzwingt einen Neustart, falls das System nicht reagiert). Stop-VM unterstützt die Optionen -TurnOff und -Force für extreme Fälle, und Save-VM versetzt den Zustand in den Ruhezustand.
Stop-VM -Name 'Windows Server 2016'
Stop-VM -Name 'Hyper-V*' -TurnOff
Stop-VM -Name 'Windows Server 2016' -Force
Save-VM -Name 'Windows Server 2016'
Get-VM -Name 'Hyper-V*' | Save-VM
Für ein ordnungsgemäßes Herunterfahren des Gastbetriebssystems ist Invoke-VMSHutdown ideal, sofern die Integration dies zulässt:
Invoke-VMShutdown -VMName 'testvps' -Force
Prüfpunkte (Schnappschüsse)
Vor kritischen Änderungen sind Prüfpunkte unerlässlich. Checkpoint-VM erstellt den Prüfpunkt , und Get-VMSnapshot überprüft ihn.
Checkpoint-VM -Name 'Windows Server 2016' -SnapshotName 'Update1'
Get-VMSnapshot -VMName 'Windows Server 2016'
Um Snapshots anhand eines Musters zu bereinigen, verwenden Sie eine Pipeline. `Remove-VMSnapshot` löscht die von Ihnen angegebenen Elemente :
Get-VM 'Hyper-V Server 2012' | Remove-VMSnapshot -Name 'Testing*'
Virtuelle Datenträger (VHD/VHDX)
Überprüft Dateipfade und Integrität. Test-VHD bestätigt die Existenz und Gültigkeit der VHD-Datei:
Test-VHD -Path 'C:\Testing.vhd'
Wenn Sie eine VHD erstellen oder einbinden müssen, kombinieren Sie New-VHD und Add-VMHardDiskDrive, um die Erstellung/Einbindung zu automatisieren. Eine feste Größe ist für leistungskritische Workloads empfehlenswert .
New-VHD -Path 'D:\hyper-v\virtual hard disks\wstest.vhdx' -SizeBytes 60GB -Fixed
Add-VMHardDiskDrive -VMName 'WSTEST' -Path 'D:\hyper-v\virtual hard disks\wstest.vhdx'
Metriken und Netzwerk
Aktivieren Sie die Ressourcenmessung und überprüfen Sie den Verbrauch pro VM. Mit Enable-VMResourceMetering + Measure-VM erhalten Sie Informationen zur CPU-, RAM-, Festplatten- und Netzwerknutzung.
Enable-VMResourceMetering -VMName 'Windows Server 2016'
Measure-VM -VMName 'Windows Server 2016'
Um virtuelle Netzwerkadapter aufzulisten, muss die Verwaltung einbezogen werden. Get-VMNetworkAdapter schließt mit der Option -All sowohl VMs als auch den Host selbst ein.
Get-VMNetworkAdapter -All
Konfigurationsversion, Prozesse und Filterung
Nach der Aktualisierung des Hosts wird gegebenenfalls auch die VM-Version aktualisiert. Update-VMVersion führt diesen Vorgang sicher durch.
Update-VMVersion -Name 'TestVM'
Zur Diagnose von Engpässen verwenden Sie Prozess-Cmdlets. Get-Process, Stop-Process, Start-Process, Wait-Process und Debug-Process geben Ihnen die Kontrolle.
Get-Process -Id 8892
Get-Process WINWORD | Format-List *
Start-Process -FilePath 'notepad.exe'
Start-Process -FilePath 'powershell' -Verb RunAs
Stop-Process -Name 'notepad'
Stop-Process -Id 5052
Where-Object filtert beliebige Sammlungen. Verwenden Sie es mit Diensten, Cmdlets oder Prozessen, um nur die relevanten Daten beizubehalten.
Get-Service | Where-Object {$_.Status -eq 'Stopped'}
Get-Command | Where-Object {$_.Name -like '*wait*'}
Get-Process | Where-Object {$_.ProcessName -Match '^sys.*'}
Erstellen und Konfigurieren von VMs mit PowerShell
Das Erstellen einer VM der zweiten Generation mit einer neuen VHDX-Datei und einem zugewiesenen Netzwerk ist mit einem einzigen Befehl möglich. Mit `new-VM` können Sie Arbeitsspeicher, Festplatte, Pfad und Switch in einem Schritt definieren:
New-VM -Name 'WSTEST' -MemoryStartupBytes 2GB -Generation 2 \
-NewVHDPath 'D:\hyper-v\virtual hard disks\WSTEST.vhdx' \
-NewVHDSizeBytes 60GB -SwitchName 'ExternalSwitch'
Wenn Sie ein virtuelles DVD-Laufwerk benötigen, um von einer ISO-Datei zu booten, fügen Sie einen Controller und ein Laufwerk hinzu. Achten Sie darauf, dass die Controllernummer und der Standort zu Ihrem Layout passen.
Add-VMSCSIController -VMName 'WSTEST'
Add-VMDvdDrive -VMName 'WSTEST' -ControllerNumber 1 -ControllerLocation 0 -Path 'D:\ISO\my.iso'
Sie können auch feste Festplatten erstellen und diese einbinden. Feste VHDX-Dateien reduzieren Fragmentierung und Latenz in E/A-intensiven Umgebungen.
New-VHD -Path 'D:\hyper-v\virtual hard disks\wstest.vhdx' -SizeBytes 60GB -Fixed
Add-VMHardDiskDrive -VMName 'WSTEST' -Path 'D:\hyper-v\virtual hard disks\wstest.vhdx'
Bei vorhandenen VHDs geben Sie -VHDPath an und, falls Sie die Remote-Administration verwenden, fügen Sie -ComputerName hinzu . Mit der Eigenschaft -BootDevice können Sie zwischen VHD-, ISO- oder Netzwerkstart wählen.
New-VM -ComputerName 'Server1' -Name 'VM1' -MemoryStartupBytes 4GB \
-BootDevice VHD -VHDPath '.\VMs\Win10.vhdx' -Path '.\VMData' \
-Generation 2 -SwitchName 'ExternalSwitch'
Ein Beispiel für die Verwendung von „Splatting“ in PowerShell ISE, um Code übersichtlich und wiederholbar zu gestalten. Es eignet sich ideal zum Erstellen von Vorlagen:
$VMName = 'VMNAME'
$VM = @{
Name = $VMName
MemoryStartupBytes = 2147483648
Generation = 2
NewVHDPath = "C:\\Virtual Machines\\$VMName\\$VMName.vhdx"
NewVHDSizeBytes = 53687091200
BootDevice = 'VHD'
Path = "C:\\Virtual Machines\\$VMName"
SwitchName = (Get-VMSwitch).Name
}
New-VM @VM
Erweiterte Verwaltung: Bewegungen, Importe und Exporte
Move-VM unterstützt das Verschieben einer VM zwischen Hosts mit und ohne Speicher und funktioniert hervorragend, wenn sich die Quelle in einem SMB-Netzwerk befindet:
Move-VM -ComputerName 'Server1' -Name 'VM1' -DestinationHost 'Server2'
Move-VM -ComputerName 'Server1' -Name 'VM1' -DestinationHost 'Server2' \
-IncludeStorage -DestinationStoragePath 'D:\VM_name'
Beim Exportieren wird eine vollständige Kopie erstellt (Konfiguration, VHDs und Snapshots). Export-VM eignet sich für Archivierung, Tests oder Ad-hoc-Migrationen.
Export-VM -ComputerName 'Server1' -Name 'VM1' -Path 'D:\'
Get-VM | Export-VM -Path 'C:\'
Der Import bietet drei Modi: „Registrieren“ (gleiche Dateien und ID), „Wiederherstellen “ (Kopieren in einen neuen Pfad unter Beibehaltung der ID) und „Kopieren“ (Kopieren mit neuer ID). Wählen Sie den Modus basierend auf ID-Konflikten und dem Zielsystem.
# Registrar in situ (elimina antes la VM original con el mismo ID)
Get-VM 'DemoVM' | Remove-VM
Import-VM -Path 'C:\\Virtual Hard Disks\\Exported VMs\\DemoVM\\Virtual Machines\\{GUID}.vmcx'
# Restaurar a nuevas rutas, conservando ID
Import-VM -Path 'C:\\Virtual Hard Disks\\Exported VMs\\Hyper-V Server 2012\\Virtual Machines\\{GUID}.vmcx' \
-Copy -VhdDestinationPath 'C:\\Program Files\\Imported VMs\\VHD Files' \
-VirtualMachinePath 'C:\\Program Files\\Imported VMs\\VM Files'
# Copiar con nuevo ID (importable varias veces en el mismo host)
Import-VM -Path 'C:\\Virtual Hard Disks\\Exported VMs\\DemoVM\\Virtual Machines\\{GUID}.vmcx' \
-Copy -GenerateNewId
Wenn Sie mit Azure Local arbeiten (Windows Server 2019/2022 und Versionen wie 2311.2 und höher), ist die Remoteadministration mit -ComputerName die Norm: Inventarisierung, Start/Stopp, Prüfpunkte, Import/Export und Verschiebungen werden alle von Ihrem Verwaltungscomputer aus ausgeführt.
Netzwerk, Speicher und Ressourcen: Speicher und CPU
Erstellen Sie Switches, um VMs vom LAN zu trennen oder mit ihm zu verbinden. New-VMSwitch unterstützt Bandbreitenmodi und QoS:
New-VMSwitch 'QoS Switch' -NetAdapterName 'Wired Ethernet Connection 3' -MinimumBandwidthMode Weight
Fügen Sie virtuellen NICs zu VMs hinzu und verbinden Sie diese mit dem entsprechenden Switch. Add-VMNetworkAdapter ist Ihr hilfreiches Werkzeug für die VM-Netzwerkverwaltung.
Add-VMNetworkAdapter -ComputerName 'Server1' -VMName 'VM1' -Name 'Redmond NIC1'
Add-VMNetworkAdapter -ComputerName 'Server1' -VMName 'VM1' -SwitchName 'Network'
Dynamischer Speicher optimiert die Speicherdichte, ohne die Kontrolle zu verlieren. Set-VMMemory passt Minimal-, Start- und Maximalwerte, Priorität und Puffergröße an:
Set-VMMemory -ComputerName 'Server1' -Name 'VM1' -DynamicMemoryEnabled $true \
-MinimumBytes 64MB -StartupBytes 256MB -MaximumBytes 2GB -Priority 80 -Buffer 25
Weisen Sie vCPUs mit Grenzwerten und Reservierungen zu. Set-VMProcessor definiert Anzahl, Reservierung, Maximum und relative Gewichtung pro VM:
Set-VMProcessor -ComputerName 'Server1' -Name 'VM1' -Count 2 -Reserve 10 -Maximum 75 -RelativeWeight 200
Um neue Datenträger zu erstellen, unterstützt New-VHD sowohl dynamische als auch statische VHD/VHDX-Szenarien. In Kombination mit Add-VMHardDiskDrive können diese der gewünschten VM zugeordnet werden.
Massenvorgänge und Filterung
Die Anzeige von Hyper-V-Modulbefehlen in einem interaktiven Raster ist sehr nützlich. Out-GridView hilft Ihnen dabei, die verfügbaren Befehle und Parameter zu untersuchen:
Get-Command -Module Hyper-V | Out-GridView
Für Inventarlisten können Sie nach Status filtern. Mit Where-Object sehen Sie auf einen Blick, ob VMs ausgeführt werden oder heruntergefahren sind:
Get-VM | Where-Object {$_.State -eq 'Running'}
Get-VM | Where-Object {$_.State -eq 'Off'}
Starten Sie alle ausgeschalteten VMs oder stoppen Sie laufende VMs mithilfe von Pipelines. Ideal für geplante Aufgaben.
Get-VM | Where-Object {$_.State -eq 'Off'} | Start-VM
Get-VM | Where-Object {$_.State -eq 'Running'} | Stop-VM
Umbenennen und Bereinigen sind ebenfalls unkompliziert. Rename-VM und Remove-VM helfen Ihnen beim Umbenennen und Entfernen (beachten Sie, dass Remove-VM keine VHDs löscht):
Rename-VM -ComputerName 'Server1' -Name 'VM1' -NewName 'VM2'
Get-VM -Name 'VM2'
Remove-VM -Name 'VM2'
In einem Cluster sollten bei Bedarf ganze Gruppen entfernt werden. `Remove-ClusterGroup -RemoveResources` bereinigt die VM und ihre Clusterressourcen.
Get-ClusterGroup
Remove-ClusterGroup -RemoveResources -Name 'VM1'
Überwachung und Sicherung: Skripte und Tools
Um den Zustand von Hyper-V mithilfe von HTML-Berichten zu überprüfen, generiert das Skript von Serhat Akinci einen umfassenden Umgebungsbericht , der per E-Mail versendet werden kann. Laden Sie es herunter und sehen Sie sich eine Beispielausgabe an:
Download-Link · Beispielbericht
Bei Verwendung von Hyper-V Replica überwacht das Sangeeth-Skript den Replikationsstatus auf einzelnen Knoten oder Clustern und liefert einen verteilungsfertigen HTML-Bericht:
Replication Health Mailer herunterladen
Im Bereich Datenschutz gibt es speziell für virtuelle Maschinen entwickelte Lösungen wie NAKIVO Backup & Replication (VMware, Hyper-V, Nutanix, AWS EC2, Linux, Windows und Microsoft 365) und Vinchin Backup & Recovery (Proxmox, VMware, Hyper-V, XenServer, XCP-ng, oVirt, RHV usw.). Diese bieten agentenlose Datensicherung, sofortige Wiederherstellung und V2V-Migration und ermöglichen die zentrale Verwaltung von Richtlinien und Zeitplänen zur Risikominimierung.
Beachten Sie, dass Export-VM und Import-VM als Ad-hoc-Alternativen für Archivierung, Tests und einfache Wiederherstellung dienen, aber kein Ersatz für eine umfassende Datensicherung mit Deduplizierung, Verschlüsselung und Komprimierung sind . Der Export erfordert mehr manuelle Eingriffe und ist in großen Umgebungen weniger skalierbar.
Sie verfügen nun über eine praktische Anleitung zur Nutzung von Hyper-V in der Konsole: Cmdlets entdecken, VMs erstellen und verschieben, Ressourcen messen, Netzwerk und Speicher optimieren, Massenfilterung durchführen und Zustandsberichte erstellen . Das PowerShell-Ökosystem bietet Ihnen Geschwindigkeit und Genauigkeit; kombinieren Sie es mit geeigneten Kopierrichtlinien und Überwachungsskripten, und Sie erhalten eine robuste und skalierbare Plattform.