Capture d'une image généralisée
DISM peut être utilisé pour capturer une installation système modifiée et en créer un fichier d'image d'installation Windows. Ce processus parfois nommé "build and capture" ou "bâtir et capturer" permet de concevoir un gabarit pour une image d'installation généralisée (sysprep) et est surtout pertinente dans un contexte ou plusieurs machines ont besoin d'une installation standardisée (ex. un laboratoire informatique) sans être reliées à un domaine Active Directory. Certains outils facilitent ce processus tels que le Microsoft Deployment Toolkit et Configuration Manager mais DISM peut aussi être utilisé pour ce processus.
Le désavantage de cette méthode est que si l'ont veut mettre à jour la version de base du système ou la version déployée des applications, il sera nécessaire de recapturer une image mise à jour.
Préparation d'une image
Installation du système
Installez Windows normalement, ceci peut être effectué à partir d'une image personnalisée ou une image standard de Microsoft.
Il est possible d'utiliser un fichier de configuration "unattended" XML pour automatiser la configuration. Dans notre cas, redémarrons en mode d'audit.
Configuration de l'installation
Redémarrons en mode d'audit avec les touches "CTRL+Shift+F3" lors de la configuration système (aussi nommée OOBE). Ce mode d'audit créera un compte local "auditUser" et permettera de personnaliser le système sans passer par le guide de configuration initiale.
Appliquons ensuite nos modifications. Toute modification appliquée à l'ordinateur local (ex. installations de programmes dans les fichiers de programmes, modifications au registre pour HKLM et HKU\.DEFAULT, etc.) seront prises en compte lors de la capture de l'image d'installation.
Retirons quelques applications, installons un navigateur et quelques applications, changeons les applications par défaut et ajoutons quelques paramètres au registre.
La commande "Get-AppxProvisionedPackage -Online" nous permet d'afficher les applications qui seront déployées à tous les utilisateurs. Retirons-en quelques unes
Get-AppxProvisionedPackage -Online | Select-Object -Property DisplayName
Remove-AppxProvisionedPackage -Online -PackageName "MSTeams_1.0.0.0_x64__8wekyb3d8bbwe" -AllUsers
Remove-AppxProvisionedPackage -Online -PackageName "Clipchamp.Clipchamp_3.0.10220.0_neutral_~_yxz26nhyzhsrt" -AllUsers
Remove-AppxProvisionedPackage -Online -PackageName "MicrosoftCorporationII.QuickAssist_2024.309.159.0_neutral_~_8wekyb3d8bbwe" -AllUsers
Remove-AppxProvisionedPackage -Online -PackageName "Microsoft.YourPhone_1.24012.105.0_neutral_~_8wekyb3d8bbwe" -AllUsers
Remove-AppxProvisionedPackage -Online -PackageName "Microsoft.WindowsFeedbackHub_2024.125.1522.0_neutral_~_8wekyb3d8bbwe" -AllUsers
Remove-AppxProvisionedPackage -Online -PackageName "Microsoft.OutlookForWindows_1.0.0.0_neutral__8wekyb3d8bbwe" -AllUsers
Remove-AppxProvisionedPackage -Online -PackageName "Microsoft.MicrosoftSolitaireCollection_4.19.3190.0_neutral_~_8wekyb3d8bbwe" -AllUsers
Remove-AppxProvisionedPackage -Online -PackageName "Microsoft.MicrosoftOfficeHub_18.2308.1034.0_neutral_~_8wekyb3d8bbwe" -AllUsers
Remove-AppxProvisionedPackage -Online -PackageName "Microsoft.GetHelp_10.2302.10601.0_neutral_~_8wekyb3d8bbwe" -AllUsers
Remove-AppxProvisionedPackage -Online -PackageName "Microsoft.BingNews_4.1.24002.0_neutral_~_8wekyb3d8bbwe" -AllUsers
Remove-AppxProvisionedPackage -Online -PackageName "Microsoft.GamingApp_2024.311.2341.0_neutral_~_8wekyb3d8bbwe" -AllUsers
Get-AppxProvisionedPackage -Online | Select-Object -Property DisplayName
PS C:\Users\Administrateur> Get-AppxProvisionedPackage -Online | Select-Object -Property DisplayName
DisplayName
-----------
Microsoft.ApplicationCompatibilityEnhancements
Microsoft.AV1VideoExtension
Microsoft.AVCEncoderVideoExtension
Microsoft.BingSearch
Microsoft.BingWeather
Microsoft.DesktopAppInstaller
Microsoft.HEIFImageExtension
Microsoft.HEVCVideoExtension
Microsoft.MicrosoftEdge.Stable
Microsoft.MicrosoftStickyNotes
Microsoft.MPEG2VideoExtension
Microsoft.Paint
Microsoft.PowerAutomateDesktop
Microsoft.RawImageExtension
Microsoft.ScreenSketch
Microsoft.SecHealthUI
Microsoft.StorePurchaseApp
Microsoft.Todos
Microsoft.VP9VideoExtensions
Microsoft.WebMediaExtensions
Microsoft.WebpImageExtension
Microsoft.Windows.DevHome
Microsoft.Windows.Photos
Microsoft.WindowsAlarms
Microsoft.WindowsCalculator
Microsoft.WindowsCamera
Microsoft.WindowsNotepad
Microsoft.WindowsSoundRecorder
Microsoft.WindowsStore
Microsoft.WindowsTerminal
Microsoft.Xbox.TCUI
Microsoft.XboxGamingOverlay
Microsoft.XboxIdentityProvider
Microsoft.XboxSpeechToTextOverlay
Microsoft.ZuneMusic
MicrosoftWindows.Client.WebExperience
MicrosoftWindows.CrossDevice
Appliquons certains paramètres de registre à la machine locale.
Windows Registry Editor Version 5.00
;Bloquer la télémétrie
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\DataCollection]
"AllowTelemetry"=dword:00000000
;Afficher les détails lors de la connexion
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
"VerboseStatus"=dword:00000001
;Afficher les détails lors d'un bluescreen
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\CrashControl]
"DisplayParameters"=dword:00000001
"DisableEmoticon"=dword:00000001
;Désactiver la limitation d'alimentation
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Power\PowerThrottling]
"PowerThrottlingOff"=dword:00000001
;Désactiver la limitation d'utilisation réseau
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile]
"NetworkThrottlingIndex"=dword:ffffffff
;Réduire le temps d'attente d'arrêt de services à l'arrêt du système
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control]
"WaitToKillServiceTimeout"="2000"
Appliquons certains paramètres de registre à l'utilisateur par défaut.
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\Explorer]
;Désactiver la recherche en ligne
"DisableSearchBoxSuggestions"=dword:00000001
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced]
;Afficher les secondes
"ShowSecondsInSystemClock"=dword:00000001
;Afficher les extensions de fichier
"HideFileExt"=dword:00000000
;Comportement et contenu de la barre des tâches
"TaskbarAl"=dword:00000000
"TaskbarMn"=dword:00000000
"TaskbarDa"=dword:00000000
"ShowCopilotButton"=dword:00000000
[HKEY_CURRENT_USER\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32]
;Menu contextuel classique
@=""
[HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\WindowsCopilot]
;Désactiver Copilot
"TurnOffWindowsCopilot"=dword:00000001
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize]
;Configuration du thème sombre
"SystemUsesLightTheme"=dword:00000000
"AppsUseLightTheme"=dword:00000000
Installons quelques applications et configurons les associations de fichiers et les applications par défaut. Notez le "--scope machine" à la fin de la commande. Les applications doivent être installées pour l'ensemble du système et non seulement pour un utilisateur. On peut aussi paramétrer nos applications si elles acceptent une configuration globale ou par défaut.
winget install Google.Chrome 7zip.7zip Microsoft.VisualStudioCode TheDocumentFoundation.LibreOffice VideoLAN.VLC Joplin.Joplin GIMP.GIMP BlenderFoundation.Blender --accept-source-agreements --accept-package-agreements --scope machine
Une fois les associations de types de fichiers et assignations d'applications par défaut appliquées, exportons celle de notre utilisateur temporaire et importons-les commes associations par défaut.
DISM /Online /Export-DefaultAppAssociations:associations.xml
DISM /Online /Import-DefaultAppAssociations:associations.xml
Configurez la disposition de votre menu démarrer puis exportons-la et réimportons-la comme disposition par défaut.
Export-StartLayout -Path ".\LayoutModification.json"
Copy-Item -Path '.\LayoutModification.json' -Destination $env:SystemDrive'\Users\Default\Appdata\Local\Microsoft\Windows\Shell'
Généralisation de l'image
Puisque Winget a été utilisé, il faudra le désinstaller pour notre utilisateur ou l'installer pour tous les utilisateurs.
Get-AppxPackage | Where-Object Name -like *Winget* | Remove-AppxPackage
Une fois le système prêt, démarrons la généralisation du système.
C:\Windows\system32\sysprep\sysprep.exe /generalize /shutdown /oobe
Capture de l'image
Montez le stockage du système préparé sur une autre machine ou démarrez la machine à l'aide d'un WinPE et assurez-vous d'avoir assez de stockage pour récupérer la nouvelle image du système.
Dans le cas suivant, nous avons redémarré dans un ISO de Windows, assigné la lettre de lecteur K: au système préparé et ajouté une clé USB pour le stockage de l'image avec la lettre C:
La commande suivante permet de démarrer la capture.
DISM /Capture-Image /ImageFile:"C:\custom.wim" /CaptureDIR:K:\ /Name:MonImage
Cette commande prendra un moment à s'exécuter.








