Angepasstes Image von Windows 10 erstellen mit PowerShell und Hyper-V

    Windows 10 mit sysprep generalisierenFür das Deployment von Windows 10 eignet sich Micro­softs Standard-Image nicht immer, oft ist ein indivi­duell angepasstes Abbild erwünscht. Um an ein solches zu gelangen, kann man eine Referenz­instal­lation in einer VM er­stellen und diese als WIM er­fassen. Mit PowerShell lässt sich dieser Vor­gang beschleunigen.

    Microsoft sieht verschiedene Wege zu einem angepassten Installations­abbild für Windows 10 vor. Möchte man nur Features und Treiber hinzufügen oder Apps entfernen, dann kann man dies auch offline tun. Diesem Zweck dient DISM oder ein GUI-Tool wie WIM-Witch.

    Will man aber nicht nur das Betriebs­system vor der Installation modifizieren, sondern auch gleich gängige Anwendungen in das Image integrieren, dann muss man das OS installieren. An diesem Windows nimmt man online alle gewünschten Änderungen vor, generalisiert anschließend das Image und erfasst es schließlich wieder als WIM.

    Für diese Operation nimmt man heute meist keine physischen PCs mehr, sondern virtuelle Maschinen. In diesem Beispiel verwende ich Hyper-V, weil es schon in Windows 10 enthalten ist, aber VMware Workstation oder VirtualBox würden sich natürlich genauso eignen.

    Installation des Gast-OS mittels Script

    Wenn man das Betriebs­system interaktiv in eine VM installiert, dann ist erfordert dies viele Benutzer­aktionen. Beschleunigen kann man diesen Schritt mit Hilfe eines PowerShell-Scripts, das Windows 10 aus der install.wim direkt in eine VHDX spielt.

    Es handelt sich dabei um Convert-WIM2VHD, das Bestandteil des Moduls WindowsImageTools ist. Dieses installiert man durch den Aufruf von

    Install-Module -Name WindowsImageTools

    und importiert dessen Funktionen mit

    Import-Module WindowsImageTools

    Das Kommando

    Get-Command -Module WindowsImageTools

    zeigt die 3 im Modul enthaltenen Funktionen. Für uns von Interesse ist hier Convert-Wim2VHD. Aber bevor man sie startet, muss man noch ein paar Vorbereitungen treffen.

    Vorarbeiten zur VHDX-Installation

    Dazu zählt, dass man die install.wim aus der Installations-ISO bereitstellt. Es ist aber nicht nötig, das WIM-Abbild daraus zu extrahieren. Vielmehr reicht es, die ISO zu mounten.

    Im nächsten Schritt muss man den Index der Edition ermitteln, die man nutzen möchte. Die gesamte Liste kann man sich mit

    dism /Get-WimInfo /wimFile:D:\sources\install.wim

    anzeigen lassen. Im obigen Beispiel wurde die ISO in das Laufwerk mit dem Buchstaben d: gemountet.

    Die in install.wim enthaltenen Editionen mit DISM anzeigen

    Schließlich sollte man sich noch Gedanken zur beabsichtigten Größe der VHDX machen und überlegen, ob man eine VM der Generation 1 oder 2 verwendet. Abhängig davon muss man sich zwischen dem Disk-Layout für BIOS oder UEFI entscheiden. Bei einer 64-Bit-Version von Windows 10 wird man normalerweise UEFI und somit eine VM der Generation 2 bevorzugen.

    Installation starten

    Nun kann man Convert-WIM2VHD aufrufen, wobei man als zusätzliche Information den Speicherort und den Namen des virtuellen Laufwerks angeben muss:

    Convert-WIM2VHD -Path f:\images\win10-1909.vhdx -SourcePath d:\Sources\install.wim `
    -index 3 -Size 40GB -DiskLayout UEFI -Dynamic

    Dieses Beispiel verwendet zudem noch den Schalter Dynamic, um eine dynamische VHDX zu erzeugen.

    Convert-WIM2VHD übernimmt alle Aufgaben der OS-Installation, darunter auch das Partitionieren des Laufwerks.

    Die Funktion unterstützt noch weitere Parameter, etwa um keine WinRE-Partition anzulegen, eine Antwortdatei zu integrieren oder Features hinzuzufügen. Einiger dieser Aufgaben kann man aber auch nach der Installation interaktiv erledigen.

    VHDX in neue VM einhängen

    Nach dem erfolgreichen Erstellen der VHDX, das ein paar Minuten in Anspruch nimmt, legt man eine neue virtuelle Maschine an und hängt als virtuelle Festplatte die eben erzeugte VHDX ein. Wenn man die neue VM nun einschaltet, dann bootet sie in die OOBE-Phase, bei welcher der Benutzer eine Reihe von Einstellungen konfigurieren muss.

    Am Anfang der OOBE-Phase bootet man Windows 10 mit STRG + Umschalten + F3 in den Audit Mode

    Für die geplante Anpassung des Images benötigt man aber den Audit Mode. Diesen aktiviert man am einfachsten, indem man beim ersten OOBE-Bildschirm zur Auswahl der Region die Tasten­kombination STRG + Umschalten + F3 betätigt.

    Windows 10 im Audit Mode anpassen

    Die virtuelle Maschine startet nun neu und meldet das eingebaute Administrator­konto automatisch an. Jetzt bietet es sich an, alle aus­stehenden Updates einzuspielen und danach den virtuellen Rechner neu zu starten. Das kann man gleich über PowerShell erledigen:

    $u = Start-WUScan
    Install-WUUpdates -Updates $u

    Referenzinstallation mit Updates via PowerShell auf den neuesten Stand bringen

    Nach einem allfälligen Neustart installiert man die Software, welche im Image enthalten sein soll, entfernt Features und Apps oder passt die Installation nach sonstigen Erfordernissen an.

    Falls man diese Referenz­installation weiterhin verwenden möchte, um daraus angepasste Images zu generieren, sollte man an dieser Stelle einen Snapshot anlegen, zu dem man nach dem Genera­lisieren wieder zurückkehren kann.

    Installation mit Sysprep generalisieren

    Zum Abschluss wechselt man zu sysprep, das im Audit-Modus automatisch startet (ansonsten findet man es unter %SYSTEMROOT%\system32\sysprep). Beim Start ohne Parameter erhält man eine GUI, über die man unter System­bereinigungs­aktion die Option Out-of-Box-Experience (OOBE) auswählt und die Checkbox Verallgemeinern anhakt. Bei den Optionen für das Herunterfahren aktiviert man Herunterfahren und klickt auf OK.

    Generalisieren der Referenzinstallation von Windows 10

    VM von Windows PE starten

    Nachdem die VM ausgeschaltet ist, verbindet man ihr virtuelles DVD-Laufwerk mit der ISO von Windows PE. Dieses Mini-OS kann man von Microsofts Website herunterladen (siehe dazu die Anleitung für das Erstellen eines USB-Sticks oder einer ISO mit WinPE).

    Boot-Reihenfolge der VM so ändern, dass sie von der WinPE-ISO startet

    Anschließend startet man die VM vom virtuellen DVD-Laufwerk. In WinPE ruft man auf der Eingabe­aufforderung DISM auf, um das Image zu erfassen:

    Dism /Capture-Image /ImageFile:"D:\MyInstall.wim" /CaptureDir:C:\ /Name:MyInstall

    In diesem Beispiel schreibt DISM den Inhalt des Laufwerks c: (CaptureDir) nach d:\MyInstall.wim (ImageFile). Wenn man nicht sicher ist, unter welchem Buchstaben man das Quell-Image ansprechen soll, dann kann man dies mit diskpart.exe herausfinden, wo man folgende Befehlssequenz eingibt:

    list disk
    select disk <nummer>
    list vol

    Buchstaben des Quelllaufwerks über diskpart ermitteln

    Als Speicherort für die WIM bietet sich bei einer virtuellen Maschine eine zusätzliche VHDX an, die man nach dem erneuten Herunterfahren der VM im Host-OS mounten kann. Daraus entnimmt man dann das WIM-Abbild.

    Keine Kommentare