Windows-images bewerken met DISM

Noud van Kruysbergen
0

Inhoudsopgave

Om het commandline-programma DISM goed te kunnen gebruiken, moet je je er wel eerst in verdiepen. Deze introductie helpt je met de eerste stappen.

DISM van Microsoft kan bij Windows-installaties functies, stuurprogramma’s, updates en taalpakketten toevoegen of verwijderen, Windows-images naar een schijf schrijven, bewerken, opnieuw verpakken en nog veel meer.

De afkorting DISM betekent Deployment ­Image Servicing and Management. Microsoft omschrijft het als ‘a command-line tool that can be used to service and prepare Windows images’.

Aangezien de officiële naam niet meteen duidelijkheid biedt en ook veel te lang is voor dagelijks gebruik, wordt meestal de afkorting DISM gebruikt. Het programma heeft geen grafische userinter­face, dus het is zuiver bedoeld voor de commandline.

De naam van het uitvoerbare bestand is dism.exe. Je kunt het oproepen vanuit Opdrachtprompt of Power­Shell, maar in beide gevallen moet die draaien met administratorrechten.

Image

Wanneer je voor de eerste keer met DISM aan de slag gaat, is de term image in de naam vaak verwarrend, daarom hier eerst een korte uitleg. Een ­image is een verzameling van mappen en submappen en de bestanden die ze bevatten.

Een image bevat ook metadata zoals attributen en objecten van het NTFS-bestandssysteem (toegangsrechten, reparse-­points zoals junctions en hardlinks…). Zo kan een image alles bevatten wat zich op een Windows-pc op de C: schijf bevindt – en wanneer dat het geval is spreken we meestal over een Windows-image.

Maar een image kan willekeurige bestanden bevatten, bijvoorbeeld de inhoud van D:\fotos\vakantie. Een image is dus een afbeelding van een logische schijf (volume) of een map daarop, maar kan geen bestanden bevatten die zich in de originele situatie over meerdere logische schijven uitstrekken.

Images kun je verpakken in een archiefbestand in het bestandsformaat Windows Image. Dat heeft normaal gesproken de extensie .wim, vandaar de aanduiding WIM-bestand. Er zijn ook WIM-bestanden met de extensie .esd.


Meer workshops en tips en trucs lezen? Blijf op de hoogte via onze wekelijkse nieuwsbrief:


Daarin zitten bijzonder sterk gecomprimeerde images voor het verspreiden via downloaden (esd staat voor Electronic Software Distribution). Als je images over meerdere WIM-bestanden opdeelt, krijgen die de extensie .swm (Splitted WIM).

In eerste instantie kun je WIM -bestanden opvatten als ziparchieven, maar een WIM-bestand kan niet slechts één, maar meerdere images bevatten. Daarbij worden slimme compressiemethoden ­gebruikt. Images kunnen op hun beurt weer WIM -bestanden en dus ook andere images bevatten. Images kunnen in WIM-bestanden zitten, maar dat hoeft niet. Ze kunnen bijvoorbeeld in VHD/VHDX-­bestanden zitten, de virtuele harde schijven daarin zijn voor DISM dus eveneens images.

De hoofdzaak: vanuit DISM gezien is zelfs een draaiende Windows-installatie uiteindelijk slechts een image, dus de inhoud van schijf C: (meer precies: van %systemdrive%). De bootloader en de recoverypartitie, die normaal gesproken op voor Verkenner niet zichtbare, aparte partities staan, maken geen deel uit van de Windows-image, maar zijn afzonderlijke images.

Je kunt met DISM dus images bewerken die in WIM-bestanden verpakt zijn, maar ook Windows-installaties – en daarbij maakt het niet uit of ze op dat moment draaien of niet. Maar afhankelijk van de toestand van een image heeft DISM verschillende mogelijkheden, en juist bij draaiende Windows-­installaties zijn dat er heel veel.

Behalve de hierboven genoemde Windows-­images zijn er nog andere Windows-achtige images die je ook met DISM kunt bewerken. Dat zijn ­images met Windows PE. PE staat voor Preinstallation Environment. Daarbij gaat het om het minibesturingssysteem dat bijvoorbeeld opstart van een Windows-set-up-stick en waarin het eigenlijke installatieproces draait.

Een minibesturingssysteem dat sterk lijkt op PE is Windows RE (Recovery Environment). Dat is het systeem dat opstart van de reeds genoemde herstelpartitie als de eigenlijke Windows-installatie dat niet meer kan.

Eerste stappen

De eerste stappen met DISM zijn het makkelijkst als je het gewoon zelf uitprobeert – en dan op zo’n manier dat er niets fout kan gaan. We tonen hier twee voorbeelden.

Ten eerste is dat het bewerken van de dataset van een Windows-installatie op een set-up-stick, zoals je die bijvoorbeeld met de Media Creation Tool zelf kunt maken. Ten tweede is dat het verwijderen van voorgeïnstalleerde apps.

Als je beide succesvol hebt afgerond, kun je die kennis makkelijk gebruiken bij andere DISM-operaties, omdat ze allemaal op dezelfde manier verlopen.
Of je Power Shell of Opdrachtprompt voor de eerste stappen gebruikt, is een kwestie van smaak.

PowerShell heeft extra DISM-cmdlets, maar die kunnen niet meer dan wat dism.exe sowieso al kan. Hoewel de namen van de cmdlets vaak overeenkomen met de originele DISM-commando’s, zijn ze niet altijd hetzelfde.

Als je de DISM-cmdlets wilt gebruiken, zul je een iets andere syntax leren dan wanneer je dism.exe gebruikt. Dat zou niets uitmaken als PowerShell overal beschikbaar zou zijn, maar dat is niet zo. Zowel Windows PE als Windows RE moeten het doen zonder PowerShell. Om daar DISM te gebruiken, moet je dus sowieso Opdrachtprompt gebruiken (meer precies: dism.exe), en dan kun je die meteen ook overal gebruiken.

Je kunt een eerste indruk van DISM krijgen door simpelweg dism bij Opdrachtprompt in te typen. Dat resulteert in een lange lijst van opties, die op nieuwkomers een afschrikkend effect kunnen hebben. Maar de namen van de commando’s en opties volgen een uniform schema, en veel ervan werken op dezelfde manier.

Het belangrijkste is dat de toevoeging /get-help of het kortere /? voor elk subcommando en elke optie een aparte uitleg oproept. In de praktijk maakt het niet uit of het een commando of een optie is, want beide worden aan dism.exe doorgegeven met een ervoor geplaatste schuine streep (/).

De helpfunctie vertelt waar een commando of optie goed voor is, welke andere gegevens vereist zijn, en welke opties optioneel zijn. In de meeste gevallen geeft die functie ook voorbeelden.

Het eerste commando

Voor de eerste experimenten is het handig een aparte usb-stick van 16 of 32 GB te gebruiken. Download de  Media Creation Tool (MCT)  en richt daarmee een stick in als Windows-set-up-stick.

Daarbij wordt er onder andere een WIM-bestand op de stick gezet, en die kun je met DISM bewerken zonder iets anders te beschadigen. Wanneer je het WIM-bestand per ongeluk beschadigt, kun je de stick met MCT gewoon opnieuw maken.

Het WIM-bestand staat op de stick in de map sources en heet install.esd. In dat bestand zitten Windows-images die het eveneens op de stick geplaatste set-upprogramma op een interne schijf kan installeren.

Het plan is nu om een image in het WIM-bestand zo te openen dat je het kunt veranderen door een paar bestanden toe te voegen. Tot slot wordt de image inclusief de veranderingen weer naar het WIM-bestand teruggeschreven. Wanneer het set-upprogramma die image later op een schijf installeert, zitten je veranderingen daar ook bij.

DISM C draaiende image

De tool DISM verwerkt images. Daarbij maakt het niet uit of een image in een WIM-bestand zit ingepakt of zoals hier is uitgepakt op een schijf. Zelfs een draaiende Windows-installatie op station C: is voor DISM een bewerkbare image.

Kijk eerst eens naar de in het WIM-bestand opgenomen images. Dat doe je met het commando /Get-ImageInfo. Het onderdeel /Get– staat bij DISM-commando’s in principe voor het opvragen van informatie.

Zo’n commando veroorzaakt dus geen veranderingen. Aangezien het net als bijna alle DISM-commando’s te lang is om hem hier zonder afbreken af te drukken, staat hij hieronder wel over meer regels, maar moet je alle in dit artikel genoemde commando’s steeds op één enkele regel invoeren. Het gebruik van hoofd- of kleine letters speelt daarbij geen rol, maar komt de leesbaarheid wel ten goede.

Dism /Get-ImageInfo /ImageFile:H:\sources\install.esd

Het commando krijgt via /ImageFile: te horen waar het bestand staat (hier H:\sources\install.esd). Let erop dat er voor de schuine streep een spatie staat, maar tussen de dubbele punt en het pad niet. Dat is bij DISM altijd zo!

Na een spatie verwacht het programma steeds de volgende optie of het­ ­volgende commando. Wanneer je een pad met spaties erin wilt doorgeven, moet je het daarom tussen dubbele aanhalingstekens zetten.

Tip: als je bij het intypen van paden de tab-aanvulling wilt gebruiken, zet dan achter de dubbele punt eerst nog een spatie, voer dan het pad met tab-aanvulling in en verwijder daarna de spatie achter de dubbele punt weer. Vooral bij lange paden spaart dat veel typewerk uit.

DISM GET

Een commando dat met /Get- begint, geeft informatie – in dit geval over een WIM-bestand. Het pad van het WIM-bestand komt achter /ImageFile:, en zonder spatie achter de dubbele punt.

Na het uitvoeren van het commando geeft DISM informatie over de images in het opgegeven bestand. Voor iedere image wordt het indexnummer genoemd. Dat is een oplopende reeks. DISM geeft daarnaast de naam en de beschrijving van iedere image. Beide zijn vastgelegd door degene die de image oorspronkelijk in het WIM-bestand heeft gezet. Ook de grootte van iedere image wordt vermeld.

Voor de hierop volgende stappen gebruiken we de ­image Windows 10 Pro, die bij onze MCT-stick index­nummer 6 heeft. Over die image kun je met het commando /Get-ImageInfo ook weer meer informatie krijgen. Daarvoor hoef je er alleen een /Index:6 aan toe te voegen (ook hier geen spatie na de dubbele punt). Het hele commando ziet er dan zo uit:

Dism /Get-ImageInfo /ImageFile:H:\sources\install.esd /Index:6

Zodra je aan een commando dus niet alleen het pad van een WIM-bestand meegeeft, maar daarbij ook het indexnummer van een daarin opgenomen ­image, heeft het niet meer betrekking op het hele bestand, maar alleen op de uitgekozen image.

Er is overigens een commando dat op het eerste gezicht hetzelfde lijkt te doen: Get-WimInfo. De volgende regel:

Dism /Get-WimInfo /WimFile:H:\Sources\Install.esd

levert dezelfde output op als /Get-ImageInfo. Het verschil is dat /Get-WimInfo alleen met WIM- en ESD-bestanden overweg kan, en je met /Get-Image­Info ook informatie over bijvoorbeeld VHD/VHDX-bestanden kunt opvragen.

DISM Get image info

Wanneer je aan het commando /Get-ImageInfo- ook nog een indexnummer meegeeft, richt het commando zich niet meer op het hele WIM-bestand, maar op een afzonderlijke image daarin.

De twee commando’s laten één ding duidelijk zien: wanneer aan een commando een directory- of bestandspad meegegeven moet worden, wordt de naam van de optie van het eigenlijke commando afgeleid.

Zo moet je bij /Get-ImageInfo het pad achter /ImageFile: opgeven, terwijl /Get-Wim­Info het achter /WimFile: verwacht. Die wetenschap maakt het je later makkelijk om bij andere commando’s ook zonder dat je bij de helpfunctie hoeft te kijken kunt vermoeden of herinneren wat je moet intypen.

(Lees het volledige artikel van Axel Vahldiek en Noud van Kruysbergen in c’t magazine 3/2021, p. 134. Online versie: bewerkt door Alieke van Sommeren)

Meer handige workshops in c't magazine jul/2021

Deel dit artikel

Lees ook

Windows File Recovery om bestanden te herstellen

Microsoft biedt met Windows File Recovery een eigen programma om per ongeluk verwijderde bestanden te herstellen. Windows File Recovery werkt vanaf Wi...

Windows PowerToys: krachtig speelgoed

Het meest populaire onderdeel van de klassieke PowerToys (Windows XP en nog vroeger) was waarschijnlijk het programma TweakUI, dat veel niet-gedocumen...

0 Praat mee
avatar
  Abonneer  
Laat het mij weten wanneer er