Wer ein Windows Server 2016 o. ä. installiert, findet nach der Installation immer den gleichen Ausgangspunkt vor. Auch müssen erst immer sämtliche Updates installiert werden, da Microsoft gerade die Images für Windows Server nicht aktualisiert. Daher möchte ich hier zeigen wie eigene Windows-Images erstellt werden können. So kann ein Windows-Image erstellt werden, in dem beispielsweise eine bestimmte Rolle wie Hyper-V standardmäßig installiert und aktiviert ist oder die neuesten Windows Updates oder Treiber bereits im Image enthalten sind. Auch können diverse andere Änderungen im Image enthalten sein.
Inhaltsverzeichnis
Vorbereitungen
In dieser Anleitung werde ich ein angepasstes Image für Windows Server 2016 erstellen. Daher habe ich bereits ein entsprechendes originales Windows-Image gemountet:

In dem gemounteten Image befindet sich unter "sources" eine Datei "install.wim":

Diese Datei ist sehr wichtig, da diese die Setup-Routine enthält. Beispielsweise sind dort die verschiedenen Installationsoptionen (Standard, Standard Core, Datacenter und Datacenter Core bei Windows Server 2016) enthalten.
Zusätzlich habe ich ein Verzeichnis C:\temp\win2016image angelegt, in welchem ich arbeiten werde. In dieses Verzeichnis kopiere ich jetzt auch die Datei "install.wim" aus dem originalen Windows-Image:

Windows-Image bearbeiten
Zunächst kann ich mir einmal anzeigen lassen, welche Images bereits in der Datei "install.wim" enthalten sind:
Get-WindowsImage -ImagePath C:\temp\win2016image\install.wim

Ich möchte nur noch das Image für Windows Server 2016 Standard (GUI) behalten. Entsprechend lösche ich unter Angabe des Indexes alle übrigen Images:
Remove-WindowsImage -ImagePath C:\temp\win2016image\install.wim -Index 1

Windows Updates integrieren
Damit Windows Updates integriert werden können, müssen diese zuvor heruntergeladen werden. Ich habe einen Ordner C:\temp\win2016image\updates erstellt, um in diesen die heruntergeladenen Updates zu speichern. Die gewünschten Updates können aus dem Microsoft Update Katalog heruntergeladen werden. Die Updates werden schließlich in Form von MSU-Dateien heruntergeladen:

Damit das Windows Image jetzt mit den neuen Updates ausgestattet werden kann, muss dieses zuvor unter Angabe des Indexes gemountet werden. Dafür erstelle ich erst einen neuen Order als Mountpunkt und mounte das Image anschließend:
mkdir C:\temp\win2016image\mount
Mount-WindowsImage -ImagePath C:\temp\win2016image\install.wim -Index 1 -Path C:\temp\win2016image\mount

Der Pfad C:\temp\win2016image\mount enthält jetzt auch Ordner, die bereits aus Windows-Installationen bekannt sind. Ich erstelle testweise einen Ordner C:\temp, damit dieser bei frischen Windows-Installationen direkt vorhanden ist:

Die bereits heruntergeladenen Updates lassen sich jetzt dem Image hinzufügen:
Add-WindowsPackage -Path C:\temp\win2016image\mount -PackagePath C:\temp\win2016image\updates
Wenn sämtliche Änderungen vorgenommen wurden, müssen diese wieder in die install.wim zurückgeschrieben werden. Das gelingt mit folgendem Commandlet:
Dismount-WindowsImage -Path C:\temp\win2016image\mount -Save
Anschließend ist der Ordner "mount" wieder leer und sämtliche Änderungen wurden in die install.wim geschrieben, welche jetzt auch einen aktuellen Zeitstempel aufweist.
Weitere Konfigurationen durchführen
Neben Updates können noch weitere Änderungen integriert werden. Beispielsweise können mit dem Commandlet "Enable-WindowsOptionalFeature" Rollen standardmäßig installiert und aktiviert werden. Das ginge dann beispielsweise so:
# Alle Rollen / Features anzeigen, die Hyper-V enthalten:
Get-WindowsOptionalFeature -Path C:\temp\win2016image\mount | where FeatureName -Like "*hyper*"
# Hyper-V installieren. Der Parameter "-All" installiert direkt alle Abhängigkeiten mit:
Enable-WindowsOptionalFeature -Path C:\temp\win2016image\mount -FeatureName microsoft-hyper-v -All
Welche Befehle zur weiteren Anpassung des Images zur Verfügung stehen, zeigt der folgende Befehl:
Get-Command -Module dism
Neue ISO-Datei erstellen
Nachdem sämtliche Änderungen gemacht wurden, können diese verteilt werden. Dafür gibt es mehrere Wege. Hier zeige ich, wie sich eine neue ISO-Datei erstellen lässt, die auch unter UEFI bootfähig ist.
Oscdimg installieren
Zunächst brauchen wir das Tool Oscdimg von Microsoft. Dieses Tool ist Bestandteil vom Windows Assessment and Deployment Kit. Das Windows ADK (Windows Assessment and Deployment Kit) muss schließlich heruntergeladen und installiert werden. Für unser benötigtes Tool reicht es die Bereitstellungstools im Installer auszuwählen:

Das Tool "Oscdimg" befindet sich nun unter folgendem Pfad: C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools\amd64\Oscdimg\oscdimg.exe
ISO-Image erstellen
Zunächst ist ein neuer Ordner zu erstellen, der sämtlichen Inhalt des ursprünglichen Windows Server 2016 Installationsmediums enthält. Dazu kann einfach der Inhalt des im DVD-Laufwerk gemounteten Windows-Images in den neuen Ordner kopiert werden:

Anschließend ist in diesem Ordner die Datei sources/install.wim durch die angepasste install.wim auszutauschen:

Mit einer administrativen Eingabeaufforderung ist nun in das Verzeichnis C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools\amd64\Oscdimg zu wechseln. Dort kann dann mit folgendem Befehl eine ISO-Datei erzeugt werden, die auch unter UEFI bootfähig ist:
oscdimg.exe -bC:\temp\win2016image\fullimage\efi\microsoft\boot\efisys.bin -pEF -u1 -udfver102 C:\temp\win2016image\fullimage C:\temp\win2016image\server2016.iso

Die neue ISO-Datei ist fertig und kann jetzt auf einem Computer im UEFI-Modus installiert werden. In meinem Beispiel wurde ich nicht mehr nach der zu installierenden Version gefragt, da im Image ja nur noch Windows Server 2016 Standard enthalten ist. Auch sehe ich direkt nach der Installation den Ordner C:\temp:

Mit dem Commandlet Get-HotFix kann in der PowerShell abgefragt werden, welche Updates bereits installiert sind. Auch dort tauchen die hinzugefügten Updates auf.
Neues Image über WDS bereitstellen
Die Windows Bereitstellungsdienste (WDS) werden als Rolle installiert. Nach erfolgter Installation können die Windows Bereitstellungsdienste gestartet werden. Dort ist noch der entsprechende Server zu konfigurieren, falls noch nicht geschehen:

Am wichtigsten für uns ist bei der Konfiguration der Punkt "PXE-Antwort". Denn dieser legt fest, welche Clients eine Antwort vom WDS bekommen. Die Option "Nur bekannten Computern antworten" bedeutet, dass nur Clients, die bereits ein Computerkonto in der AD haben, einen PXE-Start ausführen dürfen. Die Option "Allen Clientcomputern antworten" sollte selbsterklärend sein. Sie lässt sich noch durch "Administratorgenehmigung für unbekannte Computer erforderlich machen..." einschränken. Dadurch mussen Computer erst genehmigt werden, bevor diese vom WDS Installationen starten und durchführen dürfen:

Ein WDS benötigt DHCP und DNS im Netzwerk um zu funktionieren. In den meisten Fällen ist der WDS nicht auf dem DHCP-Server installiert. In diesem Fall ist auf dem DHCP-Server noch die Option 66 zu konfigurieren, damit die Clients den WDS-Server finden. Unter Option 66 ist der Hostname des Bereitstellungsservers anzugeben.
Wenn diese Vorbereitungen alle erledigt sind, kann das erstellte Image schließlich hinzugefügt werden:

Dort ist die neu erstellte install.wim auszuwählen und eine Gruppe anzulegen.
Neben der install.wim ist noch eine Datei sources\boot.wim aus einem Windows-Image unter Startabbilder hinzuzufügen:

Computer mit PXE-Start starten und Windows Server installieren
Wenn ein Computer bootet und dieser Bildschirm zu sehen ist, ist die Taste ENTER zu drücken:

Anschließend werden die Daten vom Server geladen und die eigentliche Setuproutine kann beginnen:

Nachdem wir uns am Deployment-Server authentifiziert haben, läuft die Windows-Installation fast so ab, wie wir es gewohnt sind. Nach erfolgter Installation haben wir einen frisch installierten Windows Server samt Anpassungen.
In diesem Artikel haben wir erfolgreich eigene Windows-Images erstellt und verteilt. Viel Spaß beim selber ausprobieren 🙂
Weiterführende Links
https://www.virtuallyghetto.com/2016/06/quick-tip-how-to-create-a-windows-2016-iso-supporting-efi-boot-wo-prompting-to-press-a-key.html
https://msdn.microsoft.com/de-de/library/hh831764(v=ws.11).aspx
Quellen
https://msdn.microsoft.com/de-de/library/windows/hardware/dn898597(v=vs.85).aspx
7 Antworten auf „Eigene angepasste Windows-Images erstellen und verteilen“
Ich bin hier heute durch Zufall auf diese Seite gekommen. Ganz große Klasse! Ich danke für dieses Tutorial.
Beste Grüße
Vielen lieben Dank für den netten Kommentar 🙂
Tolle Anleitung! Hat mir sehr geholfen. Allerdings schaffe ich es nicht, Über WDS die Installation Silent durchzuführen. Es scheint so, als würde das *.XML-File nicht geladen werden, obwohl ich dieses sowohl dem Image, als auch bei der Server-Konfig zugewiesen habe. Muss für WDS etwas in der unattand.xml hinzugefügt werden??
Hallo und guten Tag in die Runde, ich versuche z.Z. ein WIN 1809 LTSC Image zu erstellen. Nach erfolgten Anpassung und Erstellung der install.wim tausche ich diese in Matrix42 (Bereitstellung der BSysteme) aus. Leider ist nach der WIN Installation keine Anpassung zu sehen. Wo könnte der Fehler liegen? Vielleicht hat jemand eine Idee. Schönen Advent
Hallo Carsten,
hast du denn mit dem Befehl "Dismount-WindowsImage" die Änderungen wieder zurück in das eigentliche Image geschrieben?
LG Rafael
Hallo Rafael, danke erst einmal für eine Rückmeldung!
Nein, das habe ich wohl nicht gemacht. An welcher Stelle muß ich das machen. Mit Dism erstelle ich ja meine neue install.wim, was auch soweit ohne Fehler läuft.
Hallo Carsten,
nachdem alle Änderungen am Image durchgeführt sind, muss man die Änderungen zurück in das Image schreiben. Zuvor sind diese nur temporär im Mountpoint vorhanden.
Wenn du DISM nutzt, geht das auch mit DISM: Dism /Commit-Image /MountDir:C:\test\offline
In meinem Artikel verwende ich PowerShell, also etwa Dismount-WindowsImage -Path C:\temp\win2016image\mount -Save
Welchen der beiden Befehle du verwendest sollte keine Rolle spielen.
Der Befehl ist ganz am Ende durchzuführen, wenn du deine Änderungen am Image vorgenommen hast.
LG Rafael