Tags: Hardware, Hyper-V, PowerShell
Legt man eine neue virtuelle Maschine an, dann erhält sie
standardmäßig ein DVD-Laufwerk. In der Regel dient dieses dazu, das Gastbetriebssystem zu installieren. Ist dies erledigt, dann bleibt die ISO häufig im Laufwerk und die virtuelle DVD-Hardware erfüllt keinen Zweck mehr. Es empfiehlt sich, sie dann zu entfernen.
Bei VMware vSphere gilt es als Best Practice, nicht benötigte virtuelle Hardware aus einer VM zu entfernen. Die gleichen Gründe sprechen dafür, dies auch unter Hyper-V zu tun. Ungenutzte virtuelle Hardware bietet zum einen Angriffsflächen. Zum anderen verursacht jedes virtuelle Gerät auch Interrupts der physikalischen CPU. Wenn man es entfernt, dann reduziert man damit auch den Overhead einer VM.
Hardware über die GUI verwalten
Es ist relativ einfach, virtuelle DVD-Laufwerke oder andere Komponenten über den Hyper-V Manager anzuzeigen, zu entfernen oder wieder hinzufügen. Die entsprechenden Befehle finden sich in den Einstellungen einer virtuellen Maschine.
Die GUI-Variante wird jedoch schnell unpraktisch, wenn sich auf einem Host mehrere Dutzend VMs befinden und man sich einen Überblick über den Status der DVD-Laufwerke verschaffen möchte. Hier bietet PowerShell mit dem Cmdlet Get-VMDvdDrive eine effiziente Alternative.
Laufwerke mit PowerShell anzeigen
Um die DVD-Laufwerke aller VMs und ihren Status zu analysieren, kann man diesen Befehl verwenden (bei Remote-Aufrufen gibt man den Namen des PCs über den Parameter Computername an):
Get-VM | Get-VMDvdDrive
Die Ausgabe ist relativ unübersichtlich, weil bei der Pfadangabe für eine ISO der Dateiname abgeschnitten wird und zudem Hardware-Infos aufscheinen, die man in dieser Situation meist nicht benötigt.
Folgender Befehl zeigt den VM-Namen und den Medientyp an, außerdem extrahiert er den bloßen Dateinamen der ISO mit Hilfe von Split-Path:
Get-VM | Get-VMDvdDrive |
select VMName, @{Name="Pfad";Expression={Split-Path -Leaf($_.path)}}, DvdMediaType
Medien aus den virtuellen Laufwerken auswerfen
Möchte man nun die ISO-Dateien aus den Laufwerken aller VMs auswerfen, dann kann man dies über das Cmdlet Set-VMDvdDrive erreichen:
Get-VM | Get-VMDvdDrive | ? DvdMediaType -eq "ISO" | Set-VMDvdDrive -Path $null
Dieser Befehl filtert über Where-Object (Alias '?") jene VMs aus, die eine ISO gemountet haben und setzt ihren Pfad mit Set-VMDvdDrive auf $null, was dem Auswerfen einer DVD in der physikalischen Welt entspricht.
DVD-Laufwerk entfernen
Um das oben genannte Ziel zu erreichen, nämlich unnötige Hardware zu entfernen, nutzt man das Cmdlet Remove-VMDvdDrive:
Get-VMDvdDrive -VMName WS2012R2* | Remove-VMDvdDrive
Dieses Beispiel verzichtet auf Get-VM und ermittelt die virtuellen Maschinen über den Parameter VMName in GetVMvdDrive, der auch Wildcards zulässt.
DVD-Laufwerk wieder hinzufügen
Wenn man zu einem späteren Zeitpunkt doch wieder ein virtuelles DVD-Laufwerk für eine VM benötigt, dann kann man diese entweder über den Hyper-V Manager oder auch über PowerShell wieder hinzufügen.
Im ersten Schritt findet man heraus, welche Controller in einer VM vorhanden sind. Bei VMs der ersten Generation hängen DVD-Laufwerke üblicherweise an einem IDE- und bei der Generation 2 an einem SCSI-Controller. Für die Anzeige der beiden Typen sind jeweils eigene Cmdlets zuständig, nämlich Get-VMIdeController und Get-VMScsiController.
Hat man durch einen Aufruf nach dem Muster
Get-VMScsiController -VMName WS2012R2*
die Nummer des Controllers ermittelt, dann kann man diese dann verwenden, um eine DVD anzuschließen:
Add-VMDvdDrive -VMName WS2012R2* -ControllerNumber 0
Dieser Befehl versieht die beiden VMs mit DVD-Laufwerken, die aus ihnen im obigen Beispiel entfernt wurden.
Keine Pendants für Floppy-Laufwerke
Das hier demonstrierte Vorgehen wäre auch für andere Hardware-Komponenten interessant. Das gilt besonders für die nutzlosen Floppy-Laufwerke, die Maschinen der ersten Generation automatisch erhalten. Allerdings bietet das PowerShell-Modul für Hyper-V im Gegensatz zu VMware PowerCLI mit Remove-FloppyDrive dafür kein Cmdlet.
PowerShell bietet nur die Möglichkeit, Floppies mit Get-VMFloppyDiskDrive anzuzeigen oder mit Set-VMFloppyDiskDrive ein eventuell eingelegtes Medium auszuwerfen. Auch im Hyper-V Manager lässt dich diese Komponente nicht entfernen.
Täglich Know-how für IT-Pros mit unserem Newsletter
Verwandte Beiträge
- Hyper-V Switch mit PowerShell erstellen, verwalten und löschen
- usbipd-win: USB-Geräte mit Hyper-V-Gästen und WSL teilen
- Windows 11 in einer virtuellen Maschine installieren
- Virtuelle Maschine vollständig mit PowerShell erstellen (am Beispiel von Azure Stack HCI)
- StarWind bringt hyperkonvergente All-Flash-Server
Weitere Links