A screenshot of a cell phone

Windows Image Files (WIM) updaten, pflegen und benutzen

9f9ed1b716264ada87adfe8077267586

Da ich mich viel mit Deployment und Rollouts beschäftige, dachte ich, ich schreib mal ein paar Grundlagen Artikel, auf die ich dann verweisen kann. Das spart einem manchmal etwas Zeit in Workshops für die Interessanteren Dinge oder gibt Administratoren noch Anreize, was sie noch automatisieren können.

WIM Dateien, was ist das denn?

Mag der eine oder andere denken, Windows Image Media sind seit Windows 7 für Installationen im Einsatz. Es handelt sich um einen Container mit Daten, ähnlich einer VHD Datei. Diese WIM Dateien kommen bei verschieden Installationsarten zum Einsatz, zum Beispiel:

  • DVD-Medien
  • USB Installation
  • Windows Deployment Service (WDS)
  • System Center Configuration Manager (SCCM)
  • Andere Installationstools wie ZCM, Baramundi und Co.
  • Microsofts kleine Funktion WIM-Dateien in VHDX Dateien für Virtuelle Maschinen umzuwandeln. Diese nutze ich teilweise in meinen Skripten.

Wer sich jetzt fragt, „warum soll ich das Bearbeiten“, der installiert bitte mal Windows 7, 8, 10 oder Windows Server 2012R2/2016 mit einem „Release to Manufacturing“ (RTM) Datenträger, also der ersten Offiziellen Version und spielt dann alle Updates ein. Aber auch kann es Sinnvoll sein, benötigte Treiber direkt einzubinden oder Windows-Features im Image zu aktivieren, bzw. zu deaktivieren.
Früher gab es einfache Möglichkeiten sollte „aktuellen“ Datenträger zu erstellen, das nannte man eine „Slip stream CD“. Und ja, es geht heute noch, unter anderem. Die Kunden mit Volumenlizenzverträgen können sich aus dem Volumenlizenz Portal auch aktualisierte Datenträger herunterladen, aber die werden meistens nur einmal im Jahr aktualisiert.

WIM Images sind Container mit Partitionen. Für die Installation kommen meistens 2 verschiedene WIM Dateien zum Einsatz. Die Boot.WIM enthält den Bootbaren Installer mit allem was für das Installation Programm erforderlich ist. Die Install.WIM enthält die Dateien zur Installation. Eine Install.WIM von zum Beispiel Windows 10 kann verschiedene Editionen enthalten. Dies spart Platz bei den Installationsmedien.

Was kann man noch alles mit WIM Dateien machen?

Vieles, neben dem Hinzufügen von Windows Updates können auch zum Beispiel Treiber eingespielt werden. Hier sind noch ein paar Punkte:

  • Hinzufügen einer automatischen Antwortdatei
  • Hinzufügen oder Entfernen von Windows Features bei der Installation
  • Einspielen eines Windows Key
  • Hinzufügen von weiteren Dateien
  • Entfernen von Windows 10 Apps

Alles davon kann man auch mit dem Microsoft Deployment Toolkit (MDT) erreichen, aber für manche Kunden ist das zu viel Aufwand oder nicht automatisierbar genug.

Eine Möglichkeit wäre sich ein PowerShell Skript zu erstellen, dass das Installationsimage automatisch pflegt.

WIM-Dateien mit der PowerShell bearbeiten


Hinweis zu Programm- und PowerShell Code

Der hier enthaltene Code dient als Beispiel. Ich übernehme keine Garantie, Gewährleistung oder Support für den Code oder Bestandteile. Verwendung des Codes erfolgt auf eigene Gefahr.
Ich empfehle immer sich die Skripte vor der Verwendung genau anzuschauen, was sie wirklich tun.


Es gibt einige Befehle rund um die WIM-Dateien, hier mal ein paar mit Beispielen, die ich oft benötige. Den Link zur Vollständigen List mit Erklärungen finden Sie am Ende des Artikels.:

Anzeigen vom Index in WIM Files mit Get-WindowsImage

Get-WindowsImage -ImagePath $WIMorg | Select ImageIndex,ImageName,@{Name="ImageSize (GB)";Expression={[math]::round($_.ImageSize/1GB, 2)}}
030419 0946 WindowsImag1

Hier das Ergebnis für die Install.WIM für Windows 10 1809 Business Editionen. Hier kann auch gut mit Where-Filtern gearbeitet werden, um unabhängig der Anordnung der Editionen immer die Professional oder Enterprise zu selektiven.

Werbung
$ProIndex = (Get-WindowsImage -ImagePath $WIMorg | ? { $_.ImageName -like "Windows 10 Pro" }).ImageIndex
030419 0946 WindowsImag2

Mounten von WIM-Dateien

Jetzt wo wir den Index kennen, können wir diesen Index zur Bearbeitung mounten. Dies geschieht mit dem Befehl „mount-WindowsImage“. Das Einbinden in das Verzeichnis dauert einen Moment, da die WIM-Dateien auch stark komprimiert sind. Wer im Übrigen eine Fehlermeldung mit dem Text „Mount-WindowsImage : Sie nicht zum Bereitstellen und Ändern dieses Abbilds berechtigt“ erhält, sollte die WIM-Datei nicht versuchen direkt von der DVD oder der ISO zu mounten. Da kann die Änderung nicht gespeichert werden.

Der Befehl könnte so aussehen:

Mount-WindowsImage -Path "C:\Temp\wimtemp" -ImagePath $WIMorg -Index $ProIndex
030419 0946 WindowsImag3

Hinzufügen von Updates als CAB-Paketen und MSU-Dateien

Unterstützte Cabinet-Dateien (CAB) oder „Eigenständige Windows Updates“ (MSU-Dateien) können mit dem Befehl „Add-WindowsPackage“ installiert werden. Wichtig ist hier die richtige Reihenfolge für Abhängigkeiten bei den einzelnen Updates. Wenn die Updatedateien mit einer Reihenfolge benannt wurden, kann man sich das Leben einfach machen. Alternativ kann man es mit der „CreationTime“ versuchen:

$Patches = ls $PATH -i "*.msu","*.cab" -r | Sort-Object -Property LastWriteTime
ForEach ($Patch in $Patches) { Add-WindowsPackage -PackagePath $Patch.fullname -Path "C:\Temp\wimtemp" -NoRestart -LogLevel Warnings -LogPath "C:\Temp\$date-DISM-$Edition.log" }

Nicht alle MSU und CAB-Dateien können integriert werden. Zum Download der Updates kann der Updatekatalog verwendet werden. Wem das zu kompliziert ist, dem empfehle ich WSUSofflineUpdate.net.

030419 0946 WindowsImag4

Die Fehlermeldung 0x800f081e bedeutet das das Update nicht erforderlich ist. Dieser Fehler kann also ignoriert werden.

Windows Features in einer WIM-Datei installieren / deinstallieren

Natürlich kann man auch Features in einem WIM-Image aktivieren oder deaktivieren. Dies ist praktisch, wenn zum Beispiel .Net 3.5 oder Zugriff auf SMB1-Server benötigt wird. Eine Liste mit allen Features des WIM-Images samt Technischen Namen erhalten Sie mit dem Befehl:

Get-WindowsOptionalFeature -Path "C:\Temp\wimtemp" | FT -AutoSize
030419 0946 WindowsImag5

Der Status „Enabled“ bzw. „Disabled“ sind selbsterklärend. Es gibt aber auch noch „DisabledWithPayloadRemoved“, zum Beispiel bei .Net 3.5. Dies bedeutet, die Quellen sind nicht im Image enthalten und müssen angegeben werden.

Der Befehl Zugriff aus SMB1-Server zu ermöglichen ist zum Beispiel:

Werbung
Enable-WindowsOptionalFeature -Path "C:\Temp\wimtemp" -FeatureName "SMB1Protocol-Client" -all
030419 0946 WindowsImag6

Für die Installation von .Net muss eine Quelle mit angegeben werden. Dafür eignet sich eine SXS-Freigabe oder das passende Verzeichnis der DVD/ISO (D:\Sources\sxs). Der Befehl dazu ist:

Enable-WindowsOptionalFeature -Path "C:\Temp\wimtemp" -FeatureName "NetFx3" -all -Source D:\sources\sxs
030419 0946 WindowsImag7

Um auch das Abschalten mit einem Beispiel zu versehen, hier das Beispiel zum Deaktivieren der XPS Druckfunktion:

Werbung
Disable-WindowsOptionalFeature -Path "C:\Temp\wimtemp" -FeatureName "Printing-XPSServices-Features"
030419 0946 WindowsImag8

Entfernen von Windows Apps im Image

Zu nächst muss geklärt werden, welche Anwendungen im Image vorhanden sind. Dazu gibt es die PowerShell-Befehle aus der „AppxProvisionedPackage“ Reihe. Zum Auslesen welche Appx-Anwendungen im Image sind, ist der folgende Befehl geeignet:

Get-AppxProvisionedPackage -Path "C:\Temp\wimtemp" | select Displayname, PackageName | ft -AutoSize
030419 0946 WindowsImag9

Zum Entfernen empfehlen sich wieder Where-Klauseln:

Werbung
Get-AppxProvisionedPackage -Path "C:\Temp\wimtemp" | ? { $_.DisplayName -like "Microsoft.Xbox*" } | Remove-AppxProvisionedPackage -Path "C:\Temp\wimtemp"
030419 0946 WindowsImag10

Wichtiger Hinweis, nicht alle Apps lassen sich so entfernen.

Speichern der WIM-Datei

Nach dem Modifizieren der WIM-Datei muss diese gespeichert werden. Dies kann mit dem Befehl „Dismount-WindowsImage“ erreicht werden. Die Syntax ist:

Dismount-WindowsImage -Path "C:\Temp\wimtemp" -save -Verbose
030419 0946 WindowsImag11

WIM fertig und nun?

Die fertige WIM Datei kann nun genutzt werden, zum Beispiel im WDS oder einem Bootmedium.

Wer jetzt noch etwas Optimieren möchte, der kann sich die folgenden Befehle zur weiteren Optimierung anschauen:

Add-WindowsDriver: Hinzufügen von Windows Treiben zum Image

Remove-WindowsImage: Entfernen von nicht benötigten Partitionen im WIM (Zum Beispiel die „N“ Editionen)

Alle PowerShell Befehle für das Modul DISM finden Sie bei Microsoft DOCS.

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

New articles in english

Werbung

Themen

Active Directory Administrative Vorlagen Anleitung AppV5 Autopilot Azure Azure AD ConfigMgr Deployment GPO Gruppenrichtlinien Guide How-To Linux Microsoft Microsoft Intune Office Office365 PowerShell Public Preview SCCM2012R2 SCSM2012R2 ServiceMgr Sicherheit TechNet Windows Windows 10 Windows10 Windows Server 2012 Windows Server 2012R2

Hinweise zum Affiliate-Marketing

Auf diesen Seiten werden auch Affiliate Marketing Links angezeigt. Diese sind meistens an dem kleinen „€“ oder einem „*“ dahinter zu erkennen. Der Betreiber dieser Seite erhält beim Kauf über diesen Link eine Provision, ohne das es den Verkaufspreis beeinflusst. Diese Einnahmen tragen zur Finanzierung der Seite bei.