Tags: VHD, OS Deployment, Hyper-V
Wenn man Windows in einer virtuellen Maschine einrichtet, dann muss man Rollen und Features nicht im Live-System mit dem Server Manager aktivieren. Alternativ kann man die VHDX-Datei für ein Offline-Servicing mit DISM oder PowerShell mounten. Damit lässt sich die Bereitstellung von VMs beschleunigen.
DISM und die PowerShell-Cmdlets des gleichnamigen Moduls dienen nicht nur der Bearbeitung von WIM-Archiven, sondern eignen sich schon länger für das Servicing von VHDs. Diese Fähigkeit kann man sich zunutze machen, um die Konfiguration des Gastbetriebssystems zu automatisieren.
Das gilt besonders, wenn man zuvor Windows mit Hilfe von Wim2VHD ohne Benutzerinteraktion in eine VHD installiert. Anschließend muss man das virtuelle Laufwerk nicht erst an eine VM anhängen und hochfahren, sondern kann die benötigten Features gleich offline hinzufügen.
Die dafür erforderlichen Schritte, nämlich das Mounten der VHD, das Aktivieren der Features sowie das Aushängen des Images und das Schreiben der Änderungen kann man leicht in ein Script packen und in einem Durchgang abarbeiten.
VHD mounten
Wenn man sich für DISM entscheidet, dann würde man die VHD nach diesem Muster mounten:
dism /mount-image /imageFile:"F:\myvm.vhdx" /MountDir:F:\mnt /index:1
Der Parameter Index muss bei VHDs immer den Wert 1 haben. Der äquivalente Aufruf würde in PowerShell so aussehen:
Mount-WindowsImage -Path f:\mnt -ImagePath "F:\myvm.vhdx" -Index 1
Features anzeigen und aktivieren
Anschließend kann man sich die Liste der Windows-Features anzeigen lassen, um deren genauen Namen für die Aktivierung zu ermitteln:
Dism /Image:F:\mnt /Get-Features
Möchte man nur ein bestimmtes aus der langen Liste der Features anzeigen, dann müsste man die Ausgabe durch eine Pipe an findstr.exe schicken.
Bei PowerShell kann man dagegen gleich den Namen angeben, wobei auch Wildcards erlaubt sind:
Get-WindowsOptionalFeature -Path f:\mnt -FeatureName Hyper*
Anschließend aktiviert man das gewünschte Feature auf diese Weise:
Dism /Image:F:\mnt /enable-Feature:Microsoft-Hyper-V /ALL
Dieser Aufruf würde Hyper-V installieren.
Die PowerShell-Variante würde so aussehen:
Enable-WindowsOptionalFeature -Path f:\mnt -FeatureName Microsoft-Hyper-V
Als nützlich kann sich diese Art der Installation von Hyper-V bei Nested Virtualization für ein Lab mit Azure Stack HCI erweisen. Möchte man den Hypervisor in der laufenden Host-VM aktivieren, dann kann das an der Prüfung der Voraussetzungen scheitern, obwohl diese objektiv erfüllt sind.
Fügt man ihn aber offline hinzu, dann bestehen gute Chancen, dass Hyper-V in der VM anschließend funktioniert.
VHD aushängen und Änderungen speichern
Zu Abschluss muss man die VHDX nur noch aushängen und dabei die Änderungen speichern. Dazu gibt man entweder
dism /unmount-image /mountDir:F:\mnt /commit
oder bei PowerShell
Dismount-WindowsImage -Path f:\mnt -Save
ein.
Das virtuelle Laufwerk kann man nun zu einer VM hinzufügen, wenn nicht ohnehin vorher geschehen.
Täglich Know-how für IT-Pros mit unserem Newsletter
Ähnliche Beiträge
- DISM Befehlsübersicht: Images anpassen, Windows reparieren, Optionale Features und Datei-Zuordnungen verwalten
- Virtuelle Maschinen unter Hyper-V von Generation 1 auf 2 konvertieren
- Angepasstes Image von Windows 10 erstellen mit PowerShell und Hyper-V
- Convert-WindowsImage: Windows automatisch in einer VHDX installieren
- Hyper-V: Virtuelle Maschine remote mit ISO-Image verbinden
Weitere Links