Gestion des fonctionnalités et des images Windows avec DISM et PowerShell

Vue d’ensemble

Cet article traite en parallèle DISM (Deployment Image Servicing and Management) et PowerShell (l’enveloppe de l’API DISM). Les opérations sont regroupées avec des exemples concrets, les options clés et le comportement attendu.

Conventions de variables

Variable Exemple Remarque
<<IMAGE_PATH>> C:\mount ou E:\Windows Chemin pour /Image: (Windows hors ligne monté ou dossier Windows d’un autre disque)
<<FEATURE_NAME>> NetFx3 Nom de la fonctionnalité Windows
<<CAPABILITY_NAME>> OpenSSH.Client~~~~0.0.1.0 Extension OS (FoD : Features on Demand)
<<WIM_PATH>> D:\sources\install.wim Fichier image WIM/ESD
<<INDEX>> 1 Index d’image
<<MOUNT_DIR>> C:\mount Point de montage
<<DRIVER_DIR>> D:\drivers Dossier contenant des INF
<<PACKAGE_PATH>> C:\Updates\kb5005565.cab Fichier de paquet de mise à jour
<<LANG_PACK>> C:\LP\ja-jp\lp.cab CAB du pack linguistique
<<SOURCE_PATH>> D:\sources\sxs Source (ex. pour NetFx3)
<<APPLY_DIR>> C:\ Dossier de destination
<<SCRATCH_DIR>> C:\Temp\Scratch Dossier de travail
<<LOG_PATH>> C:\Temp\dism.log Chemin du journal

Presque toutes les commandes acceptent /ScratchDir:<<SCRATCH_DIR>> et /LogPath:<<LOG_PATH>>.


Étape 1 : Ciblage (/Online ou /Image)

La plupart des commandes DISM exigent de préciser explicitement la cible.

Option Signification Exemple
/Online Système Windows en cours d’exécution dism /Online /Cleanup-Image /CheckHealth
/Image:<<IMAGE_PATH>> Windows hors ligne ou image montée dism /Image:C:\mount /Add-Driver /Driver:D:\drivers /Recurse

Étape 2 : Inspection des fonctionnalités (/Get-Features, /Get-FeatureInfo)

Description

Récupère la liste des fonctionnalités et leur état (Enabled / Disabled / DisabledWithPayloadRemoved).

Options clés

Option Signification Exemple
/Online Cible le système actif dism /Online /Get-Features
/Image:<<IMAGE_PATH>> Cible une image hors ligne dism /Image:C:\mount /Get-Features
/Get-Features Affiche la liste dism /Online /Get-Features /Format:Table
/Get-FeatureInfo Détail d’une fonctionnalité dism /Online /Get-FeatureInfo /FeatureName:NetFx3
/FeatureName:<<FEATURE_NAME>> Nom de la fonctionnalité NetFx3
/Format:Table Sortie tabulaire dism /Online /Get-Features /Format:Table

Exemples

# Lister toutes les fonctionnalités avec leur état
dism /Online /Get-Features /Format:Table

# Détails pour NetFx3
dism /Online /Get-FeatureInfo /FeatureName:NetFx3

DisabledWithPayloadRemoved indique que les fichiers ont été supprimés : fournir /Source.


Étape 3 : Activer/Désactiver des fonctionnalités (/Enable-Feature, /Disable-Feature)

Description

Active ou désactive des fonctionnalités comme .NET Framework 3.5 ou SMB 1.0.

Options clés

Option Signification Exemple
/Online Cible le système actif dism /Online /Enable-Feature /FeatureName:NetFx3
/FeatureName:<<FEATURE_NAME>> Nom de la fonctionnalité NetFx3
/All Inclut les dépendances
/Source:<<SOURCE_PATH>> Source pour payload manquant dism /Online /Enable-Feature /FeatureName:NetFx3 /Source:D:\sources\sxs
/LimitAccess N’utilise pas WU/WSUS
/Enable-Feature Active une fonctionnalité dism /Online /Enable-Feature /FeatureName:SMB1Protocol
/Disable-Feature Désactive une fonctionnalité dism /Online /Disable-Feature /FeatureName:SMB1Protocol
/LogPath:<<LOG_PATH>> Journal

Exemples

# Activer .NET Framework 3.5 (NetFx3) depuis la source locale (sans Internet)
dism /Online /Enable-Feature /FeatureName:NetFx3 /All /LimitAccess /Source:<<SOURCE_PATH>> /LogPath:<<LOG_PATH>>

# Désactiver SMB1 pour la sécurité
dism /Online /Disable-Feature /FeatureName:SMB1Protocol /LogPath:<<LOG_PATH>>

Étape 4 : Inspection des Capabilities (/Get-Capabilities, /Get-CapabilityInfo)

Description

Liste et état des modules FoD (RSAT, OpenSSH.Client, Language.Basic, etc.).

Options clés

Option Signification Exemple
/Online Cible le système actif dism /Online /Get-Capabilities
/Image:<<IMAGE_PATH>> Cible une image hors ligne dism /Image:C:\mount /Get-Capabilities
/Get-Capabilities Liste des capabilities dism /Online /Get-Capabilities /Format:Table
/Get-CapabilityInfo Détail d’une capability dism /Online /Get-CapabilityInfo /CapabilityName:OpenSSH.Client~~~~0.0.1.0
/Format:Table Sortie tabulaire dism /Online /Get-Capabilities /Format:Table

Exemples

# Liste complète
dism /Online /Get-Capabilities /Format:Table

# Détails d’une capability spécifique
dism /Online /Get-CapabilityInfo /CapabilityName:<<CAPABILITY_NAME>>

Les capabilities peuvent être ajoutées via Windows Update, WSUS, un ISO/partage, etc.


Étape 5 : Ajouter/Supprimer des Capabilities (/Add-Capability, /Remove-Capability)

Description

Ajoute ou supprime des FoD (OpenSSH, RSAT, …).

Options clés

Option Signification Exemple
/Online Cible le système actif dism /Online /Add-Capability
/CapabilityName:<<CAPABILITY_NAME>> Nom de la capability OpenSSH.Client~~~~0.0.1.0
/Source:<<SOURCE_PATH>> ISO FoD ou partage dism /Online /Add-Capability /CapabilityName:OpenSSH.Client~~~~0.0.1.0 /Source:D:\ /LimitAccess
/LimitAccess Utilise seulement la source indiquée
/LogPath:<<LOG_PATH>> Journal

Exemples

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

# Supprimer un RSAT inutile
dism /Online /Remove-Capability /CapabilityName:<<CAPABILITY_NAME>> /LogPath:<<LOG_PATH>>

Étape 6 : Réparation de l’image et magasin de composants (/Cleanup-Image)

Description

Détecte/répare la corruption de WinSxS et optimise l’espace.

Options clés

Option Signification Exemple
/Online Cible le système actif dism /Online /Cleanup-Image /CheckHealth
/CheckHealth Vérification rapide
/ScanHealth Analyse approfondie
/RestoreHealth Réparation dism /Online /Cleanup-Image /RestoreHealth
/Source:<<SOURCE_PATH>> Source de réparation
/LimitAccess Sans Windows Update
/StartComponentCleanup Nettoyage des anciens correctifs
/ResetBase Figé (pas de retour arrière)
/AnalyzeComponentStore Analyse de la taille

Exemples

# Vérification rapide
dism /Online /Cleanup-Image /CheckHealth

# Analyse complète
dism /Online /Cleanup-Image /ScanHealth

# Réparation avec source explicite
dism /Online /Cleanup-Image /RestoreHealth /Source:<<SOURCE_PATH>> /LimitAccess /LogPath:<<LOG_PATH>>

# Nettoyage et figer la base
dism /Online /Cleanup-Image /StartComponentCleanup /ResetBase /LogPath:<<LOG_PATH>>

Étape 7 : Informations d’image (/Get-ImageInfo)

Options clés

Option Signification Exemple
/Get-ImageInfo Infos sur WIM/ESD dism /Get-ImageInfo /ImageFile:install.wim
/ImageFile:<<WIM_PATH>> WIM cible
/Index:<<INDEX>> Index à interroger
/LogPath:<<LOG_PATH>> Journal

Exemple

# Éditions et index de install.wim
dism /Get-ImageInfo /ImageFile:<<WIM_PATH>> /LogPath:<<LOG_PATH>>

Étape 8 : Monter/Démonter une image hors ligne

Options clés

Option Signification Exemple
/Mount-Wim Monter un WIM
/WimFile:<<WIM_PATH>> Fichier WIM source
/Index:<<INDEX>> Index à monter
/MountDir:<<MOUNT_DIR>> Point de montage
/ReadOnly Montage en lecture seule
/Get-MountedWimInfo État des montages
/Unmount-Wim Démonter
/Commit Sauver les modifications
/Discard Abandonner les modifications

Exemples

# Monter pour modification
dism /Mount-Wim /WimFile:<<WIM_PATH>> /Index:<<INDEX>> /MountDir:<<MOUNT_DIR>>

# Vérifier l’état
dism /Get-MountedWimInfo

# Sauver et démonter
dism /Unmount-Wim /MountDir:<<MOUNT_DIR>> /Commit

Étape 9 : Intégrer pilotes, paquets et packs linguistiques

Options clés

Option Signification Exemple
/Online Cible le système actif
/Image:<<MOUNT_DIR>> Cible l’image hors ligne
/Add-Driver Ajouter des pilotes
/Driver:<<DRIVER_DIR>> Dossier INF
/Recurse Inclure les sous-dossiers
/Add-Package Ajouter un paquet/langue
/PackagePath:<<PACKAGE_PATH>> Chemin du paquet
/Set-AllIntl:ja-JP Définir la locale

Notes :

  • /Add-Driver est réservé au hors ligne.
  • /Add-Package et /Set-AllIntl fonctionnent en ligne comme hors ligne.

Exemples

# Intégrer des pilotes
dism /Image:<<MOUNT_DIR>> /Add-Driver /Driver:<<DRIVER_DIR>> /Recurse

# Intégrer une mise à jour
dism /Image:<<MOUNT_DIR>> /Add-Package /PackagePath:<<PACKAGE_PATH>>

# Ajouter un pack linguistique et définir la locale
dism /Image:<<MOUNT_DIR>> /Add-Package /PackagePath:<<LANG_PACK>>
dism /Image:<<MOUNT_DIR>> /Set-AllIntl:ja-JP

Étape 10 : Capturer, exporter et appliquer des images

Options clés

Option Signification Exemple
/Capture-Image Capturer un dossier vers un WIM
/ImageFile:<<WIM_PATH>> WIM de sortie
/CaptureDir:<<APPLY_DIR>> Dossier source
/Name:"<nom>" Nom de l’image
/Export-Image Réexporter/compresser un WIM
/Apply-Image Appliquer un WIM
/Compress:max Compression maximale
/ApplyDir:<<APPLY_DIR>> Dossier de destination

Exemples

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

# Réexport avec compression maximale
dism /Export-Image /SourceImageFile:<<WIM_PATH>> /SourceIndex:<<INDEX>> /DestinationImageFile:D:\install_compressed.wim /Compress:max

# Appliquer une image
dism /Apply-Image /ImageFile:<<WIM_PATH>> /Index:<<INDEX>> /ApplyDir:<<APPLY_DIR>>

Étape 11 : Équivalents PowerShell

Cartographie rapide

Domaine DISM PowerShell Objet
Lister les fonctionnalités /Get-Features, /Get-FeatureInfo Get-WindowsOptionalFeature Liste/Détails
Activer/Désactiver /Enable-Feature, /Disable-Feature Enable-WindowsOptionalFeature, Disable-WindowsOptionalFeature Gestion
Lister les capabilities /Get-Capabilities, /Get-CapabilityInfo Get-WindowsCapability Liste/Détails
Ajouter/Supprimer capabilities /Add-Capability, /Remove-Capability Add-WindowsCapability, Remove-WindowsCapability FoD
Paquets : voir/ajouter /Get-Packages, /Add-Package Get-WindowsPackage, Add-WindowsPackage Mises à jour/langues
Pilotes : voir/ajouter/supprimer /Get-Drivers, /Add-Driver, /Remove-Driver Get-WindowsDriver, Add-WindowsDriver, Remove-WindowsDriver Principalement hors ligne
Infos/monter WIM /Get-ImageInfo, /Mount-Wim, /Unmount-Wim Get-WindowsImage, Mount-WindowsImage, Dismount-WindowsImage Gestion WIM

11.1 Fonctionnalités (Features)

Get-WindowsOptionalFeature

Option Signification Exemple
-Online Cible le système actif Get-WindowsOptionalFeature -Online -FeatureName <<FEATURE_NAME>>
-Path <<IMAGE_PATH>> Cible l’image hors ligne Get-WindowsOptionalFeature -Path <<IMAGE_PATH>>
-FeatureName <<FEATURE_NAME>> Détail ciblé -FeatureName NetFx3
# Toutes les fonctionnalités (online)
Get-WindowsOptionalFeature -Online

# Détails (offline)
Get-WindowsOptionalFeature -Path <<IMAGE_PATH>> -FeatureName <<FEATURE_NAME>>

Enable-/Disable-WindowsOptionalFeature

Option Signification Exemple
-Online / -Path <<IMAGE_PATH>> Choix de la cible Enable-WindowsOptionalFeature -Online
-FeatureName <<FEATURE_NAME>> Nom -FeatureName NetFx3
-All Inclut dépendances -All
-Source <<SOURCE_PATH>> Source d’installation -Source <<SOURCE_PATH>>
# Activer (NetFx3 avec source)
Enable-WindowsOptionalFeature -Online -FeatureName NetFx3 -All -Source <<SOURCE_PATH>>

# Désactiver (SMB1)
Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol

11.2 Capabilities

Get-WindowsCapability

Option Signification Exemple
-Online Cible le système actif Get-WindowsCapability -Online
-Name <<CAPABILITY_NAME>> Jokers possibles Get-WindowsCapability -Online -Name OpenSSH.*
-Path <<IMAGE_PATH>> Cible l’image hors ligne Get-WindowsCapability -Path <<IMAGE_PATH>>
# Liste (online)
Get-WindowsCapability -Online

# Ciblé
Get-WindowsCapability -Online -Name <<CAPABILITY_NAME>>

Add-/Remove-WindowsCapability

Option Signification Exemple
-Online / -Path <<IMAGE_PATH>> Cible Add-WindowsCapability -Online
-Name <<CAPABILITY_NAME>> Nom -Name OpenSSH.Client~~~~0.0.1.0
-Source <<SOURCE_PATH>> Source FoD -Source <<SOURCE_PATH>>
# Ajouter (online, source si nécessaire)
Add-WindowsCapability -Online -Name <<CAPABILITY_NAME>>

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

11.3 Paquets (mises à jour & langues)

Get-WindowsPackage

Option Signification Exemple
-Online / -Path <<IMAGE_PATH>> Cible Get-WindowsPackage -Online
-PackagePath <<PACKAGE_PATH>> Infos d’un paquet Get-WindowsPackage -Online -PackagePath <<PACKAGE_PATH>>
# Paquets installés (online)
Get-WindowsPackage -Online

Add-WindowsPackage

Option Signification Exemple
-Online / -Path <<IMAGE_PATH>> Cible Add-WindowsPackage -Online -PackagePath <<PACKAGE_PATH>>
-PackagePath <<PACKAGE_PATH>> .cab (recommandé) / .msu
# Intégrer une mise à jour (online)
Add-WindowsPackage -Online -PackagePath <<PACKAGE_PATH>>

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

11.4 Pilotes

Get-WindowsDriver

Option Signification Exemple
-Online / -Path <<IMAGE_PATH>> Cible Get-WindowsDriver -Path <<IMAGE_PATH>>
-All Afficher tous les pilotes -All
# Lister les pilotes d’une image hors ligne
Get-WindowsDriver -Path <<IMAGE_PATH>> -All

Add-/Remove-WindowsDriver

Option Signification Exemple
-Path <<IMAGE_PATH>> Image cible Add-WindowsDriver -Path <<IMAGE_PATH>> -Driver <<DRIVER_DIR>> -Recurse
-Driver <<DRIVER_DIR>> Dossier INF
-Recurse Inclure sous-dossiers
-Driver <<oem*.inf>> (Remove) INF à supprimer Remove-WindowsDriver -Path <<IMAGE_PATH>> -Driver oem1.inf
# Ajouter (offline)
Add-WindowsDriver -Path <<IMAGE_PATH>> -Driver <<DRIVER_DIR>> -Recurse

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

Important : Add-/Remove-WindowsDriver n’ont pas de paramètre -Online ; usage pratique : hors ligne.


11.5 Informations & montage d’images

Get-WindowsImage

Option Signification Exemple
-ImagePath <<WIM_PATH>> Chemin WIM/ESD Get-WindowsImage -ImagePath <<WIM_PATH>>
-Index <<INDEX>> Index ciblé -Index <<INDEX>>
# Tous les index de install.wim
Get-WindowsImage -ImagePath <<WIM_PATH>>

Mount-/Dismount-WindowsImage

Option Signification
-ImagePath <<WIM_PATH>> Fichier WIM source
-Index <<INDEX>> Index à monter
-Path <<MOUNT_DIR>> Point de montage
-ReadOnly Lecture seule
-ScratchDirectory <<SCRATCH_DIR>> Dossier de travail
-Save (Dismount) Sauver les modifications
-Discard (Dismount) Abandonner les modifications
# Monter
Mount-WindowsImage -ImagePath <<WIM_PATH>> -Index <<INDEX>> -Path <<MOUNT_DIR>>

# Sauver et démonter
Dismount-WindowsImage -Path <<MOUNT_DIR>> -Save

Synthèse

  • DISM : gestion bas niveau des composants OS, WIM, mises à jour et pilotes.
  • PowerShell (API DISM) : mêmes capacités avec scriptabilité pour l’inventaire, le choix et l’automatisation.
  • Capabilities (FoD) : fonctions à la demande (OpenSSH, RSAT, packs linguistiques).