DVD-Laufwerke von VMs anzeigen und entfernen, Medien auswerfen

    DVD-LaufwerkLegt man eine neue virtu­elle Maschine an, dann erhält sie standard­mäßig ein DVD-Lauf­werk. In der Regel dient dieses dazu, das Gast­betriebs­system zu instal­lieren. Ist dies erle­digt, dann bleibt die ISO häufig im Lauf­werk und die virtu­elle DVD-Hard­ware 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 ent­sprechenden Befehle finden sich in den Einstellungen einer virtuellen Maschine.

    DVD-Laufwerke von VMs in Hyper-V Manager verwalten

    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.

    Standardausgabe von Get-VMDvdDrive

    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 üblicher­weise 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.

    Keine Kommentare