Tags: OS Deployment, VHD, Windows 10, PowerShell
Wenn man Windows häufig in einer virtuellen Maschine installieren muss, dann sind die physikalischen Deployment-Methoden relativ umständlich. Wesentlich flinker geht es mit dem Script Convert-WindowsImage, sobald man einige lästige Hürden überwunden hat.
Microsoft bot bereits für die Installation von Windows 7 in einer VHD das Script WIM2VHD, aus dem später das PowerShell-basierte Convert-WindowsImage wurde. Mittlerweile wurde es mehrmals aktualisiert, so dass es nun auch Windows 10 und Windows Server 2016 unterstützt.
Script auf GitHub oder der Installations-ISO
Das Script findet sich nach dem Ende der TechNet Gallery nun auf Github. Alternativ erhält man es über die Installationsmedien für Windows Server 2016, bei der Version 2019 ist es nicht mehr vorhanden. Dazu mountet man die ISO und wechselt zu \NanoServer\NanoServerImageGenerator.
Möchte man WIM-Abbilder mit Windows 10 oder Server 2016 in eine VHD installieren, dann sollte man das Script auf einer dieser OS-Versionen ausführen oder dafür sorgen, dass man eine dazu passende Version von DISM bereitstellt.
Script starten
Convert-WindowsImage.ps1 definiert eine gleichnamige function, so dass man das Script erst ausführen muss, um die Funktion verfügbar zu machen. Dazu nutzt man das so genannte Dot-Sourcing, bei dem man dem Namen des Scripts einen Punkt voranstellt:
. .\Convert-WindowsImage.ps1
Hat man das Script von der TechNet-Gallery heruntergeladen, weil man nur den Support für ältere Windows-Versionen benötigt, dann wird man an dieser Stelle höchstwahrscheinlich mit folgender Meldung konfrontiert:
Führen Sie ausschließlich vertrauenswürdige Skripts aus. Skripts aus dem Internet können zwar nützlich sein, stellen jedoch auch eine potenzielle Gefahr für Ihren Computer dar.Sie tritt auch dann auf, wenn man die Execution Policy für PowerShell auf unrestricted gesetzt hat, was man einfach mittels Get-ExecutionPolicy abfragen kann. Dieses Hindernis beseitigt man durch den Aufruf von
Unblock-File <Pfad:>\Convert-WindowsImage.ps1
Aufruf mit GUI
Nun kann man die function mit den benötigten Angaben aufrufen. Die GUI-Option mit dem Schalter ShowUI existiert zwar weiterhin, wird aber nicht mehr unterstützt und führt bei der Auswahl einer WIM-Datei zum Fehler.
Update: In der neuesten verfügbaren Version klappt die Auswahl der Parameter über einen grafischen Dialog auch unter Windows 10 wieder.
Dabei kann man sich an der Beschreibung der Parameter in der Script-Datei orientieren, die jedoch nicht mehr auf dem neuesten Stand ist. Wie man der Deklaration der Parameter entnehmen kann, ist beispielsweise die Standardgröße der Ziel-VHD nicht mehr 40, sondern 25GB.
UEFI vs. BIOS
Je nachdem, ob man die VHD für eine VM der Generation 1 oder 2 verwenden möchte, muss man sich beim Parameter DiskLayout für UEFI oder BIOS entscheiden. Nimmt man hier den Wert UEFI, dann erzeugt das Script eine VHDX, andernfalls eine VHD. Mit VHDFormat kann man jedoch einen der beiden Typen erzwingen.
Das Script benötigt außerdem Angaben zur Quelldatei, wobei es sich dabei um die Installtions-ISO oder um eine WIM-Datei handeln kann. Letztere könnte man natürlich anpassen, wenn man nicht das Standardmedium verwenden will. Beispielsweise könnte man daraus alle mitgelieferten Store Apps entfernen.
Edition festlegen
Convert-WindowsImage erwartet noch die Angabe für Edition, die bestimmt, welches der in einer WIM enthaltenen Images man installieren möchte. Hat man etwa die Windows-10-ISO mit Multiple Editions, dann kann man sich dort zwischen Pro und Home entscheiden. Im Zweifel findet man mit diesem Kommando heraus, welche Editionen in der WIM enthalten sind:
dism /get-wiminfo /wimfile:p:\sources\install.wim
Alternativ zum Namen der Edition kann man einfach den Index wählen. Bei der NanoServer.wim stünde 1 für die Standard und 2 für die Datacenter Edition. Ein Beispielaufruf könnte so aussehen:
Convert-WindowsImage -SourcePath c:\NanoServer\NanoServer.wim -Edition 1 -VHDPath C:\NanoServer\Nano.vhdx -DiskLayout UEFI
Da Nano Server standardmäßig keine Binaries für Rollen und Features enthält, könnte man die entsprechenden Pakete gleich über den Parameter Package hinzufügen. In meinen Versuchen schlug dies grundsätzlich mit der Meldung fehl, wonach die .cab-Datei nicht gefunden werden könne.
Alternativ kann man die frisch erzeugte VHD mit Hilfe von Mount-DiskImage mounten und die Pakete mit Add-WindowsPackage hinzufügen. Dieses Vorgehen kann man sich ersparen, wenn man statt des Scripts das offiziell unterstützt Cmdlet New-NanoServerImage zusammen mit dem Parameter Package verwendet.
Aufruf für Windows 10
Möchte man hingegen die Pro Edition in 32-Bit von Windows 10 installieren, dann könnte man so vorgehen:
Convert-WindowsImage -SourcePath $pwd\install.wim -Edition Pro -VHDFormat VHDX -VHDPath $pwd\Win10Pro.vhdx -DiskLayout BIOS
Zu beachten ist dabei, dass man hier die function und nicht das Script aufruft, so dass man auf eine Pfadangabe oder die Endung .ps1 verzichten muss.
VHDX mit VM verbinden
Das Installieren von Windows in einer VHDX geht innerhalb von wenigen Minuten über die Bühne. Anschließend kann man das virtuelle Laufwerk mit einer (neuen) VM verknüpfen. Das Anlegen einer virtuellen Maschine kann man ebenfalls mit PowerShell automatisieren, zuständig ist dafür das Cmdlet New-VM. Ihm kann man über den Parameter VHDPath gleich den Pfad zur eben erstellten VHDX mitgeben.
Schaltet man die VM ein, dann bootet Windows 10 in die OOBE, in der man interaktiv die wichtigsten Einstellungen festlegen muss, so wie das bei einem frisch installierten Betriebssystem üblich ist.
Täglich Know-how für IT-Pros mit unserem Newsletter
Verwandte Beiträge
- Angepasstes Image von Windows 10 erstellen mit PowerShell und Hyper-V
- DISM Befehlsübersicht: Images anpassen, Windows reparieren, Optionale Features und Datei-Zuordnungen verwalten
- SophiApp: Einstellungen von Windows 10 mit GUI-Tool optimieren
- Windows 10 21H2 ist verfügbar: Aus für SAC, neues Release in 2022, Support bis 2025
- Windows-Images mit OSDBuilder automatisch offline aktualisieren
Weitere Links