Windows-Features und -Images mit DISM und PowerShell verwalten

Überblick

Dieser Artikel stellt DISM (Deployment Image Servicing and Management) und die PowerShell-Cmdlets (Wrapper um die DISM-API) gegenüber und ordnet typische Aufgaben mit Beispielen, Optionen und Verhalten ein.

Zu den Platzhalter-Variablen

Variable Beispiel Hinweis
<<IMAGE_PATH>> C:\mount oder E:\Windows Pfad für /Image: auf ein Offline-Windows (gemounteter Ordner oder Windows-Verzeichnis auf anderem Datenträger)
<<FEATURE_NAME>> NetFx3 Windows-Feature-Name
<<CAPABILITY_NAME>> OpenSSH.Client~~~~0.0.1.0 OS-Erweiterung (FoD: Features on Demand)
<<WIM_PATH>> D:\sources\install.wim WIM/ESD-Image
<<INDEX>> 1 Image-Index
<<MOUNT_DIR>> C:\mount Mount-Ziel
<<DRIVER_DIR>> D:\drivers Ordner mit INF-Treibern
<<PACKAGE_PATH>> C:\Updates\kb5005565.cab Update-Paket
<<LANG_PACK>> C:\LP\ja-jp\lp.cab Sprachpaket-CAB
<<SOURCE_PATH>> D:\sources\sxs Quellpfad z. B. für NetFx3
<<APPLY_DIR>> C:\ Zielordner zum Entpacken
<<SCRATCH_DIR>> C:\Temp\Scratch Arbeitsordner
<<LOG_PATH>> C:\Temp\dism.log Logdatei

Fast alle Befehle unterstützen /ScratchDir:<<SCRATCH_DIR>> und /LogPath:<<LOG_PATH>>.


Step 1: Ziel festlegen (/Online vs. /Image)

Option Bedeutung Beispiel
/Online Das aktuell gestartete Windows dism /Online /Cleanup-Image /CheckHealth
/Image:<<IMAGE_PATH>> Offline-Windows oder gemountetes Image dism /Image:C:\mount /Add-Driver /Driver:D:\drivers /Recurse

Step 2: Features abfragen (/Get-Features, /Get-FeatureInfo)

Kernpunkte

Liste und Status (Enabled / Disabled / DisabledWithPayloadRemoved) installierbarer Features ausgeben.

Wichtige Optionen

Option Bedeutung Beispiel
/Online Gegen das laufende OS dism /Online /Get-Features
/Image:<<IMAGE_PATH>> Gegen Offline-Image dism /Image:C:\mount /Get-Features
/Get-Features Featureliste dism /Online /Get-Features /Format:Table
/Get-FeatureInfo Detailinfos zu einem Feature dism /Online /Get-FeatureInfo /FeatureName:NetFx3
/FeatureName:<<FEATURE_NAME>> Ziel-Feature NetFx3
/Format:Table Tabellarische Ausgabe dism /Online /Get-Features /Format:Table

Beispiele

# Alle Features inkl. Status
dism /Online /Get-Features /Format:Table

# Details für NetFx3
dism /Online /Get-FeatureInfo /FeatureName:NetFx3

DisabledWithPayloadRemoved erfordert einen /Source-Pfad.


Step 3: Features aktivieren/deaktivieren (/Enable-Feature, /Disable-Feature)

Kernpunkte

Windows-Features wie .NET Framework 3.5 oder SMB 1.0 ein-/ausschalten.

Wichtige Optionen

Option Bedeutung Beispiel
/Online Laufendes OS dism /Online /Enable-Feature /FeatureName:NetFx3
/FeatureName:<<FEATURE_NAME>> Ziel-Feature NetFx3
/All Abhängigkeiten mit aktivieren
/Source:<<SOURCE_PATH>> Quelle für entfernte Payloads dism /Online /Enable-Feature /FeatureName:NetFx3 /Source:D:\sources\sxs
/LimitAccess Kein Windows Update/WSUS
/Enable-Feature Feature aktivieren dism /Online /Enable-Feature /FeatureName:SMB1Protocol
/Disable-Feature Feature deaktivieren dism /Online /Disable-Feature /FeatureName:SMB1Protocol
/LogPath:<<LOG_PATH>> Logpfad

Beispiele

# .NET Framework 3.5 (Offline-Quelle, kein Internet)
dism /Online /Enable-Feature /FeatureName:NetFx3 /All /LimitAccess /Source:<<SOURCE_PATH>> /LogPath:<<LOG_PATH>>

# SMB1 hart abschalten
dism /Online /Disable-Feature /FeatureName:SMB1Protocol /LogPath:<<LOG_PATH>>

Step 4: Capabilities abfragen (/Get-Capabilities, /Get-CapabilityInfo)

Kernpunkte

FoD-Komponenten (z. B. RSAT, OpenSSH.Client, Language.Basic) und deren Status anzeigen.

Wichtige Optionen

Option Bedeutung Beispiel
/Online Gegen das laufende OS dism /Online /Get-Capabilities
/Image:<<IMAGE_PATH>> Gegen Offline-Image dism /Image:C:\mount /Get-Capabilities
/Get-Capabilities Liste verfügbarer Capabilities dism /Online /Get-Capabilities /Format:Table
/Get-CapabilityInfo Detailinfo zu einer Capability dism /Online /Get-CapabilityInfo /CapabilityName:OpenSSH.Client~~~~0.0.1.0
/Format:Table Tabellarische Ausgabe dism /Online /Get-Capabilities /Format:Table

Beispiele

# Liste
dism /Online /Get-Capabilities /Format:Table

# Details
dism /Online /Get-CapabilityInfo /CapabilityName:<<CAPABILITY_NAME>>

Capabilities lassen sich über Windows Update, WSUS oder ISO/Share hinzufügen.


Step 5: Capabilities hinzufügen/entfernen (/Add-Capability, /Remove-Capability)

Kernpunkte

FoD-Komponenten wie OpenSSH oder RSAT bereitstellen/entfernen.

Wichtige Optionen

Option Bedeutung Beispiel
/Online Laufendes OS dism /Online /Add-Capability
/CapabilityName:<<CAPABILITY_NAME>> Ziel-Capability OpenSSH.Client~~~~0.0.1.0
/Source:<<SOURCE_PATH>> FoD-ISO oder Share dism /Online /Add-Capability /CapabilityName:OpenSSH.Client~~~~0.0.1.0 /Source:D:\ /LimitAccess
/LimitAccess Nur angegebene Quelle nutzen
/LogPath:<<LOG_PATH>> Logpfad

Beispiele

# OpenSSH.Client hinzufügen
dism /Online /Add-Capability /CapabilityName:<<CAPABILITY_NAME>> /LogPath:<<LOG_PATH>>

# Unerwünschte RSAT-Komponente entfernen
dism /Online /Remove-Capability /CapabilityName:<<CAPABILITY_NAME>> /LogPath:<<LOG_PATH>>

Step 6: Komponentenstore prüfen/reparieren (/Cleanup-Image)

Kernpunkte

Beschädigungen im WinSxS erkennen/reparieren und Größe optimieren.

Wichtige Optionen

Option Bedeutung Beispiel
/Online Laufendes OS dism /Online /Cleanup-Image /CheckHealth
/CheckHealth Schneller Integritätscheck
/ScanHealth Tiefenscan
/RestoreHealth Reparatur durchführen dism /Online /Cleanup-Image /RestoreHealth
/Source:<<SOURCE_PATH>> Quelle für Offline-Reparatur
/LimitAccess Ohne Windows Update
/StartComponentCleanup Alte Updates bereinigen
/ResetBase Rollback ausschließen (Basis neu setzen)
/AnalyzeComponentStore Größenanalyse

Beispiele

# Schnellcheck
dism /Online /Cleanup-Image /CheckHealth

# Tiefenscan
dism /Online /Cleanup-Image /ScanHealth

# Reparatur mit Quelle
dism /Online /Cleanup-Image /RestoreHealth /Source:<<SOURCE_PATH>> /LimitAccess /LogPath:<<LOG_PATH>>

# Aufräumen + feste Basis
dism /Online /Cleanup-Image /StartComponentCleanup /ResetBase /LogPath:<<LOG_PATH>>

Step 7: Image-Infos anzeigen (/Get-ImageInfo)

Wichtige Optionen

Option Bedeutung Beispiel
/Get-ImageInfo Infos zu WIM/ESD dism /Get-ImageInfo /ImageFile:install.wim
/ImageFile:<<WIM_PATH>> Zieldatei
/Index:<<INDEX>> Ziel-Index
/LogPath:<<LOG_PATH>> Logpfad

Beispiel

# Editionen und Indizes prüfen
dism /Get-ImageInfo /ImageFile:<<WIM_PATH>> /LogPath:<<LOG_PATH>>

Step 8: Image mounten/dismounten

Wichtige Optionen

Option Bedeutung Beispiel
/Mount-Wim WIM mounten
/WimFile:<<WIM_PATH>> Quell-WIM
/Index:<<INDEX>> Ziel-Index
/MountDir:<<MOUNT_DIR>> Mount-Pfad
/ReadOnly Read-Only
/Get-MountedWimInfo Mount-Status anzeigen
/Unmount-Wim Dismounten
/Commit Änderungen speichern
/Discard Änderungen verwerfen

Beispiele

# Mounten
dism /Mount-Wim /WimFile:<<WIM_PATH>> /Index:<<INDEX>> /MountDir:<<MOUNT_DIR>>

# Status
dism /Get-MountedWimInfo

# Speichern + dismounten
dism /Unmount-Wim /MountDir:<<MOUNT_DIR>> /Commit

Step 9: Treiber, Pakete und Sprachpakete integrieren

Wichtige Optionen

Option Bedeutung Beispiel
/Online Gegen laufendes OS
/Image:<<MOUNT_DIR>> Gegen Offline-Image
/Add-Driver Treiber hinzufügen
/Driver:<<DRIVER_DIR>> Ordner mit INF
/Recurse inkl. Unterordner
/Add-Package Paket/Sprachpaket integrieren
/PackagePath:<<PACKAGE_PATH>> Paketpfad
/Set-AllIntl:ja-JP Locale setzen

Hinweise:

  • /Add-Driver ist offline-only.
  • /Add-Package und /Set-AllIntl funktionieren online und offline.

Beispiele

# Treiberintegration
dism /Image:<<MOUNT_DIR>> /Add-Driver /Driver:<<DRIVER_DIR>> /Recurse

# Update-Paket integrieren
dism /Image:<<MOUNT_DIR>> /Add-Package /PackagePath:<<PACKAGE_PATH>>

# Sprachpaket + Locale
dism /Image:<<MOUNT_DIR>> /Add-Package /PackagePath:<<LANG_PACK>>
dism /Image:<<MOUNT_DIR>> /Set-AllIntl:ja-JP

Step 10: Image capturen, exportieren, anwenden

Wichtige Optionen

Option Bedeutung Beispiel
/Capture-Image Ordner als WIM erfassen
/ImageFile:<<WIM_PATH>> Ziel-WIM
/CaptureDir:<<APPLY_DIR>> Quellordner
/Name:"<Name>" Imagename
/Export-Image WIM neu exportieren/komprimieren
/Apply-Image WIM anwenden
/Compress:max Maximale Kompression
/ApplyDir:<<APPLY_DIR>> Zielordner

Beispiele

# Capture
dism /Capture-Image /ImageFile:D:\Custom.wim /CaptureDir:<<APPLY_DIR>> /Name:"Custom Image"

# Kompakt exportieren
dism /Export-Image /SourceImageFile:<<WIM_PATH>> /SourceIndex:<<INDEX>> /DestinationImageFile:D:\install_compressed.wim /Compress:max

# Anwenden
dism /Apply-Image /ImageFile:<<WIM_PATH>> /Index:<<INDEX>> /ApplyDir:<<APPLY_DIR>>

Step 11: PowerShell-Äquivalente

Zuordnung

Bereich DISM PowerShell Zweck
Features abfragen /Get-Features, /Get-FeatureInfo Get-WindowsOptionalFeature Liste/Details
Features ein/aus /Enable-Feature, /Disable-Feature Enable-WindowsOptionalFeature, Disable-WindowsOptionalFeature Aktivieren/Deaktivieren
Capabilities abfragen /Get-Capabilities, /Get-CapabilityInfo Get-WindowsCapability Liste/Details
Capabilities add/remove /Add-Capability, /Remove-Capability Add-WindowsCapability, Remove-WindowsCapability FoD bereitstellen/entfernen
Pakete abfragen/hinzufügen /Get-Packages, /Add-Package Get-WindowsPackage, Add-WindowsPackage Updates/LP integrieren
Treiber auflisten/integr./entf. /Get-Drivers, /Add-Driver, /Remove-Driver Get-WindowsDriver, Add-WindowsDriver, Remove-WindowsDriver Primär offline
Imageinfo/Mount /Get-ImageInfo, /Mount-Wim, /Unmount-Wim Get-WindowsImage, Mount-WindowsImage, Dismount-WindowsImage WIM verwalten

11.1 Features

Get-WindowsOptionalFeature

Option Bedeutung Beispiel
-Online Gegen laufendes OS Get-WindowsOptionalFeature -Online -FeatureName <<FEATURE_NAME>>
-Path <<IMAGE_PATH>> Gegen Offline-Image Get-WindowsOptionalFeature -Path <<IMAGE_PATH>>
-FeatureName <<FEATURE_NAME>> Einzelnes Feature -FeatureName NetFx3
# Alle Features (online)
Get-WindowsOptionalFeature -Online

# Einzelfeature (offline)
Get-WindowsOptionalFeature -Path <<IMAGE_PATH>> -FeatureName <<FEATURE_NAME>>

Enable-/Disable-WindowsOptionalFeature

Option Bedeutung Beispiel
-Online / -Path <<IMAGE_PATH>> Ziel festlegen Enable-WindowsOptionalFeature -Online
-FeatureName <<FEATURE_NAME>> Feature -FeatureName NetFx3
-All Abhängigkeiten einschließen -All
-Source <<SOURCE_PATH>> Quelle für Payload -Source <<SOURCE_PATH>>
# Aktivieren (NetFx3, Quelle angegeben)
Enable-WindowsOptionalFeature -Online -FeatureName NetFx3 -All -Source <<SOURCE_PATH>>

# Deaktivieren (SMB1)
Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol

11.2 Capabilities

Get-WindowsCapability

Option Bedeutung Beispiel
-Online Laufendes OS Get-WindowsCapability -Online
-Name <<CAPABILITY_NAME>> Wildcards möglich Get-WindowsCapability -Online -Name OpenSSH.*
-Path <<IMAGE_PATH>> Offline-Image Get-WindowsCapability -Path <<IMAGE_PATH>>
# Liste (online)
Get-WindowsCapability -Online

# Einzelne Capability
Get-WindowsCapability -Online -Name <<CAPABILITY_NAME>>

Add-/Remove-WindowsCapability

Option Bedeutung Beispiel
-Online / -Path <<IMAGE_PATH>> Ziel Add-WindowsCapability -Online
-Name <<CAPABILITY_NAME>> Capability -Name OpenSSH.Client~~~~0.0.1.0
-Source <<SOURCE_PATH>> FoD-Quelle -Source <<SOURCE_PATH>>
# Hinzufügen (online, bei Bedarf Quelle)
Add-WindowsCapability -Online -Name <<CAPABILITY_NAME>>

# Entfernen
Remove-WindowsCapability -Online -Name <<CAPABILITY_NAME>>

11.3 Pakete (Updates/Sprachpakete)

Get-WindowsPackage

Option Bedeutung Beispiel
-Online / -Path <<IMAGE_PATH>> Ziel Get-WindowsPackage -Online
-PackagePath <<PACKAGE_PATH>> Paketdetails Get-WindowsPackage -Online -PackagePath <<PACKAGE_PATH>>
# Installierte Pakete (online)
Get-WindowsPackage -Online

Add-WindowsPackage

Option Bedeutung Beispiel
-Online / -Path <<IMAGE_PATH>> Ziel Add-WindowsPackage -Online -PackagePath <<PACKAGE_PATH>>
-PackagePath <<PACKAGE_PATH>> .cab bevorzugt (auch .msu)
# Update (online)
Add-WindowsPackage -Online -PackagePath <<PACKAGE_PATH>>

# Sprachpaket (offline)
Add-WindowsPackage -Path <<IMAGE_PATH>> -PackagePath <<LANG_PACK>>

11.4 Treiber

Get-WindowsDriver

Option Bedeutung Beispiel
-Online / -Path <<IMAGE_PATH>> Ziel Get-WindowsDriver -Path <<IMAGE_PATH>>
-All Alle Treiber anzeigen -All
# Treiberliste eines Offline-Images
Get-WindowsDriver -Path <<IMAGE_PATH>> -All

Add-/Remove-WindowsDriver

Option Bedeutung Beispiel
-Path <<IMAGE_PATH>> Zielimage Add-WindowsDriver -Path <<IMAGE_PATH>> -Driver <<DRIVER_DIR>> -Recurse
-Driver <<DRIVER_DIR>> INF-Ordner
-Recurse inkl. Unterordner
-Driver <<oem*.inf>> (Remove) Zu entfernende INF Remove-WindowsDriver -Path <<IMAGE_PATH>> -Driver oem1.inf
# Hinzufügen (offline)
Add-WindowsDriver -Path <<IMAGE_PATH>> -Driver <<DRIVER_DIR>> -Recurse

# Entfernen (offline)
Remove-WindowsDriver -Path <<IMAGE_PATH>> -Driver oem1.inf

Wichtig: Add-/Remove-WindowsDriver besitzen keinen -Online-Schalter; Treiberverwaltung per Cmdlet ist primär offline.


11.5 Image-Informationen & Mount

Get-WindowsImage

Option Bedeutung Beispiel
-ImagePath <<WIM_PATH>> WIM/ESD Get-WindowsImage -ImagePath <<WIM_PATH>>
-Index <<INDEX>> Einzelnes Image -Index <<INDEX>>
# Alle Indizes von install.wim
Get-WindowsImage -ImagePath <<WIM_PATH>>

Mount-/Dismount-WindowsImage

Option Bedeutung
-ImagePath <<WIM_PATH>> Eingabe-WIM
-Index <<INDEX>> Ziel-Index
-Path <<MOUNT_DIR>> Mount-Pfad
-ReadOnly Read-Only mounten
-ScratchDirectory <<SCRATCH_DIR>> Arbeitsordner
-Save (Dismount) Änderungen speichern
-Discard (Dismount) Änderungen verwerfen
# Mount
Mount-WindowsImage -ImagePath <<WIM_PATH>> -Index <<INDEX>> -Path <<MOUNT_DIR>>

# Speichern und aushängen
Dismount-WindowsImage -Path <<MOUNT_DIR>> -Save

Kurzfazit

  • DISM: Niedrige Ebene für OS-Komponenten, WIM, Updates, Treiber.
  • PowerShell (DISM-API): Gleiche Funktionen, skript- und automatisierungsfreundlich.
  • Capabilities (FoD): On-Demand-Features wie OpenSSH, RSAT, Sprachpakete.