How To Image A Computer With Windows 10 Using dism

If you want to image a lot of computers with a clean Windows 10 image, Microsoft  has lots of built-in tools to help do this, but it’s easy to get lost and overwhelmed with their documentation.  To alleviate that headache, I will explain step-by-step how to:

  • create and use an Unattended.xml file that will:
    • skip the initial setup screens
    • create a local admin account
    • activate Windows with a product key
    • (optionally) configure other Window settings
  • capture a deployable Windows 10 .wim file using sysprep
  • deploy the image to multiple computers using the dism command line tool and WinPE
  • (optionally) add drivers to the .wim file

High-level Overview

I often found myself getting lost while trying to make a universal Windows 10 .wim image file, so in this section I will give a broad overview from start to finish of the steps needed to be completed.  This will also lay out the structure of this article.

  1. Install the Windows Automated Deployment Kit (ADK)
  2. Acquire a Windows 10 installation disc or .iso
  3. Create an Unattended.xml answer file
  4. Install Windows 10 on a spare computer
  5. Copy the Unattended.xml file to the spare computer
  6. Run sysprep.exe using the Unattended.xml file
  7. Create a WinPE disc or bootable USB drive
  8. Boot the computer to WinPE after it shuts down
  9. Capture the image to a .wim file using dism
  10. Deploy the image to a computer using dism

Install The Windows Automated Deployment Kit

Download and install the Windows 10 ADK.  You can just accept all the defaults the installer offers.  You mainly need the Deployment Tools, but the other stuff that is pre-selected will be useful for some other projects, so keep them selected.


Acquire A Windows 10 Installation Disc Or .iso

You will need some form of a Windows 10 install media.

Create An Unattended.xml Answer File

You will need to create an answer file, which contains the settings you want to be applied at the time you deploy the image to a computer.  There are many to choose from, but this article will walk though some basic ones that many organizations might use.

Copy install.wim To Your Desktop

Before you can make an answer file, Windows needs to know what sort of answers can be applied.  It finds this information from install.wim, which is located at the root of the installation disc.  Copy it to your Desktop since it cannot be read directly from the CD or .iso.

Use install.wim To Generate Some Categories To Answer

  1. Open Windows System Image Manager as an administrator
  2. Right-click in the lower-left corner
  3. Choose Select Windows Image…w10-answer-file-select-wim.png
  4. Navigate to your Desktop
  5. Open install.wimw10-answer-file-choose-wim1.png
  6. Choose Yes on the dialog that appearsw10-answer-file-create-catalog.png
  7. Right-click in the top-right section
  8. Choose New Answer File…w10-new-asnwer-file.png
  9. Stretch the windows and panes so they are easier to readw10-answer-file-strech-window.png

Begin Adding Answers To Your Answer File

Hard Drive Partitioning

  1. Right click amd64_Microsoft_Windows_Deployment_neutral
  2. Choose Add Setting to Pass 4 Specialize…deployment-4-specialize.png
  3. Expand amd64_Microsoft-Windows-Deployment-neutral within the Answer File pane
  4. Highlight ExtendOSPartition
  5. Set Extend to trueextendospartition-true.png

Computer Name, Product Key, Time Zone

  1. Right-click amd64_Microsoft-Windows-Shell-Setup_neutral
  2. Choose Add Setting to Pass 4 Specialize…
  3. Highlight amd64_Microsoft-Windows-Shell-Setup under the Answer File pane
    1. Set ComputerName to %COMPUTERNAME%
    2. Set ProductKey to your Windows 10 product code
    3. Set RegisteredOrganization to your company’s name
    4. Set TimeZone to Central Standard Time (or whatever time zone you are in)shell-setup.png

Join A Domain

  1. Right-click amd64_Microsoft-Windows-UnattendedJoin_neutral
  2. Choose Add Setting to Pass 4 Specialize…unattendedJoin-pass4.png
  3. Expand amd64_Microsoft-Windows-UnattendedJoin_neutral in the Answer File pane
  4. Expand Identification
  5. Set JoinDomain to the name of your domainjoindomain.png
  6. Highlight Credentials
  7. Set Domain to your domain
  8. Set a username and passworddomain credentials.png

Set System Locale

  1. Right-click wow64_Microsoft-Windows-International-Core
  2. Choose Add Setting to Pass 7 oobeSystem…international-core-pass7.png
  3. Highlight wow64_Microsoft-Windows-International-Core in the Answer File pane
    1. Set InputLocale to en-US (or your country code)
    2. Set SystemLocale to en-US
    3. Set UILanguage to en-US
    4. Set UserLocale to en-USset-locale.png

Set The Out Of Box Experience (Bypass Setup Screens) And Create A Local Admin Account

Microsoft-Windows-Shell-Setup (again on a different Pass)
  1. Right-click amd64_Microsoft-Windows-Shell-Setup_neutral
  2. Choose Add Setting to Pass 7 oobeSystem…shellsetup-pass7.png
  3. Expand Microsoft-Windows-Shell-Setup_neutral in the Windows Image pane
    1. Right-click OOBE
    2. Choose Add Setting to Pass 7 oobeSystem…oobe-pass7.png
  4. Expand Microsoft-Windows-Shell-Setup_neutral in the Answer File pane
  5. Highlight OOBE
    1. Set HideEULAPage to true
    2. Set HideLocalAccountScreen to true
    3. Set HideOEMRegistrationScreen to true
    4. Set HideOnlineAccountScreens to true
    5. Set HideWirelessSetupInOOBE to true
    6. Set NetworkLocation to Work
    7. Set ProtectYourPC to 1
    8. Set SkipMachineOOBE to true
    9. Set SkipUserOOBE to trueoobe-bypass.png
  6. Expand UserAccounts in the Answer File pane
  7. Right-click LocalAccounts
  8. Choose Insert New LocalAccountinsertnewaccount.png
  9. Highlight LocalAccount
    1. Set Description to Local admin account
    2. Set DisplayName to a username of your choosing
    3. Set Group to Administrators
    4. Set Name to the same as the usernamelocaladminaccount.png
  10. Expand LocalAccount
  11. Highlight Password
    1. Set Password to a password of your choosingset-password.png

Save Your Answer File

Save your answer file somewhere safe (preferably on a network share).  You will need to copy it to a different computer later on.

Install Windows 10 On A Spare Computer

Now you need a spare computer that you can install Windows 10 on.  You can customize Windows after it is installed (the settings will be captured and applied when you deploy the image), but it’s usually safer and a better practice to apply any settings through the answer file.

It’s easier to add customizations to a clean image rather than one that has already been customized, so I recommend leaving everything at the default and just moving on to the next step.

Copy the Unattended.xml File to the spare computer

Copy your Unattended.xml answer file from the previous step into C:\Windows\System32\Sysprep.

Run sysprep.exe using the Unattended.xml file

Open an administrator command prompt and enter these two commands:

cd C:\Windows\System32\Sysprep
sysprep.exe /generalize /oobe /unattend:Unattended.xml /shutdown

This will apply your answer file and shutdown the computer.  The next time you start it up, it will be as if you just deployed it to a new computer so it will apply all your answers and do a fresh install.  So it is important that you do not start the computer until you are ready to boot it into WinPE to capture the image (in a state before it has been booted).

Create A WinPE Disc Or Bootable USB Drive

Remember, the computer you just installed Windows on needs to stay powered off until this disc gets created.  So you should be running these commands from the computer you installed the WADK on.

  1. Right-click the Deployment and Imaging Tools Environment
  2. Choose Run as administratordeployment-imaging-tools.png
  3. Enter the following commands

The command below will copy the WinPE files to the hard drive so you can (optionally) customize them, but for this guide, leave everything as it is.

copype amd64 C:\WinPE

Next you can do one of two things:

1. make a bootable USB drive:

MakeWinPEMedia /UFD C:\WinPE F:

2. make an .iso file, which you can burn to a CD:

MakeWinPEMedia /ISO C:\WinPE C:\WinPE\WinPE.iso

If you made the .iso, you will need to burn it to a physical disc.  If you made the USB drive, you can move just move on to the next step.

Boot The Computer To WinPE After It Shuts Down

Now that you have either a bootable CD or USB drive that has WinPE installed on it, you need to boot the test computer to that.

Capture The Image To A .wim File Using dism

Insert the CD or USB stick into the computer you ran sysprep on.  You will need to boot to one of these devices (instead of the hard drive).  This can be adjusted in the BIOS, but there is also sometimes a function key you can press that lets you choose what device to boot to on-the-fly.  It’s different for every machine, but if you are reading this far, you probably know how to do this.

Once booted into the WinPE environment, you will be presented with a command prompt.  You will need to run the following commands to capture the image.

First, open the diskpart program


Your prompt will change and the commands you enter now will be for assigning a drive letter to the partitions so you can capture them into an image file.

First, select the disk

select disk 0

Select the first partition (the small reserved partition Windows creates) and assign it a letter

select partition 1
assign letter=r

Next, select the main Windows partition.

select partition 2
assign letter=c

You will now return the regular command prompt.  You can now use the dism tool to capture the images.

It’s most useful to save the image to a network share, but you can save it to another USB drive attached to the computer.  So first, mount a network share and assign it a drive letter.

net use j:\ \\server\share /user:username "password"

Now, you can save both partitions to their own image file:

Dism /capture-image /imagefile:j:\w10reserved.wim /index:1 /ApplyDir:r:\
Dism /capture-image /imagefile:j:\w10.wim /index:1 /ApplyDir:c:\

Deploy The Image To A Computer Using dism

Deploying the images is a similar process, but you will be using diskpart to wipe the hard drive so you can deploy a fresh image.

Run these commands (once you are booted into WinPE) to deploy the image:

select disk 0
create partition primary size=500
select partition 1
format quick fs=ntfs
assign letter=r
create partition primary
select partition 2
format quick fs=ntfs
assign letter=c
select partition 1
net use j: \\server\share /user:username "password"
Dism /apply-image /imagefile:j:\w10reserved.wim /index:1 /ApplyDir:r:\
Dism /apply-image /imagefile:j:\w10.wim /index:1 /ApplyDir:c:\
copy /Y j:\SetupComplete.cmd c:\windows\setup\scripts\SetupComplete.cmd

Notice the last two commands (these optional).  You can create and store a file on the network share named SetupComplete.cmd, which will run when the computer is finished being imaged.

I typically just put one command in it, which removes the Unattended.xml file (sensitive information in this file is already obfuscated, but it’s nice to remove it anyway).

del /f %windir%\system32\sysprep\unattended.xml

Note that you can build this file into the image, but this method is more useful if you want to change the commands that run at first boot.

Now, just type wpeutil reboot and your computer will start up to a fresh install of Windows!

(Optionally) Add Drivers To The .wim File

You may find that some computers need a special network driver or storage driver to complete the imaging successfully.  If this is the case, you can add a driver to image.  Be careful not to add too many or the image will get too big and won’t load since it runs from RAM.

Go back to the step where you copied the WinPE files to the C:\ drive.  Now, instead of creating the install media (and .iso or USB drive), run this command instead to mount the image to the local filesystem:

Dism /Mount-Image /ImageFile:"C:\WinPE\media\sources\boot.wim" /index:1 /MountDir:"C:\WinPE\mount"

Then, add your driver (replace the file path with the path to your required driver):

Dism /Add-Driver /Image:"C:\WinPE\mount" /Driver:"C:\Somefolder\driver.inf"

Now, commit your changes and unmount the image:

Dism /Unmount-Image /MountDir:"C:\WinPE\mount" /commit

You should now be able to create your media same as before:

1. make a bootable USB drive:

MakeWinPEMedia /UFD C:\WinPE F:

2. make an .iso file, which you can burn to a CD:

MakeWinPEMedia /ISO C:\WinPE C:\WinPE\WinPE.iso

24 Replies to “How To Image A Computer With Windows 10 Using dism”

  1. When I try to ACTIVE a partition I get “The selected disk is not a fixed MBR disk.” ACT command can only be used on fixed MBR disk. Not sure if this matters but my windows 10 enterprise boots with UEFI and I checked regedit my WinPE is booted in UEFI.

    Did I miss a step?

  2. Is it necessary to use 2. computer to apply answer file and capture there ie. isn’t there a way to configure a image offline in one of microsoft kits and save it to image file after configuring? Thanks for great guide!

    1. Yeah, you can make a CD and boot to that using a single computer. In large environments though, it is typically easier to use a network share since it scales better.

  3. With Windows 10 UEFI do you only need to capture the C: and R: partiton and then re-create those when it is time to deploy image to new computer, or are there other partitons I should be making and capturing/deploying?

    1. I haven’t done it yet on an UEFI computer, but I know you need a different script for it…trying to find it in Microsoft’s KB may take a while.

    1. Do you have a screenshot? I’m not sure what Windows 10 on 1 means. If you’re using dism, the image should just be applied automatically; there’s no real restore happening–you are deploying a generic image that is built up when you start the computer.

  4. It must be to do with using imagex to capture and apply and the bcd commands. for the love of…. I got it working perfect and it was either during the imagex apply or the bcdboot setting but I CANT seem to recall what switch made it work! 2 device now and its not working like it just did on this other device… all same model/settings… er!

  5. Yeah…that’s part of the reason I made this post, was all the times I got confused, I had to document it here so I could come back and follow my own instructions.

  6. Hi,

    I’m not able to run the sysrep.exe cmd; I get the “file is being used by another process” whatever message. Any clue on that?

    1. I just ran into this. There’s a box that comes up when your in audit. Can’t remember the name of it but it has a drop down list that gives you options to reboot in audit mode , sysprep mode, OOBE mode and I think something else. Close that by clicking on the X in the upper right corner. Wait about 30 seconds to make sure the process shuts down. You can then run sysprep from the command prompt.

  7. sysprep.exe /generalize /oobe /unattend:Unattended.xml /shutdown

    I’m having issues with this command in Win 10 Ent. Every time I try it gives me a pop up saying Usage: syspre.exe..(optional Arguments).. If no command line arguments are provided, a graphical interface is used to select the desired sysprep operation.

    No matter what order I put the arguments I get the same unless I leave out unattended:Unattended.xml then it just does basic oobe… Not sure what is wrong.

    1. You’re probably not in the sysprep directory via the command prompt. You can either cd to that directory or just put in the full path the Unattended.xml file.

      1. I was definitely in the sysprep directory. The folder path for the file is –
        CMD Prompt – C:\Windows\system32\sysprep…
        I even tried the direct path in the CMD from E the flash drive that it moved over on – But you’re right using the full C drive path name seemed to work. No idea why.

  8. -“Now, you can save both partitions to their own image file:
    Dism /capture-image /imagefile:j:\w10reserved.wim /index:1 /ApplyDir:r:\
    Dism /capture-image /imagefile:j:\w10.wim /index:1 /ApplyDir:c:\”

    What does /index:1 and /applydir:r do? I’ve been trying to run this cmd but I keep getting an Error: 87
    The /index option is not recognized in this context.

    All forums I’ve visited only show the index and applydir arguments being used with the dism/apply-image cmd.

    1. It applies the image to the partition.

      The index is basically a version of Windows. Run dism /get-wiminfo /wimfile:install.wim and you will see the index numbers. The .iso usually contains several different versions. But the Mircosoft System Reserved partition doesn’t have a different version. In fact, I recently learned you can make the MSR partition via diskpart, which is how I do it now; especially for EUFI machines.

      1. This is the only cmd that worked for me –

        Dism /Capture-Image /ImageFile:j:win10.wim /CaptureDir:C:\ /Name:Drive-C

        I got it from Microsoft’s TechNet page and it actually seemed to function just fine. The only problem was my unattended file failed after reboot… I googled the error and found I had to launch cmd line and open regedit and change the childcompletion reg key from 1 to 3 to boot back into windows on the new machine. Something in the unattended file isn’t right. It may be the domain join; which I think I’ll just skip as I can do that after I’ve imaged the machines.
        Of course that was just a test on an old tower that used MBR boot and now I need to make it work with Newer SSD laptops that run EUFI boot and make sure my wim is customized properly.

        1. You shouldn’t need to do any registry hacks to get the job done. The Unattended file is very, very picky and one wrong syntax will fail the whole thing, which you don’t know about until you start up the machine. Keep the Unattended file as simple as possible and then use the first boot script to finish customizing.

  9. Hi,

    Thanks for this very useful info. Will this work on a UEFI system though? I am trying to push windows 10 image on a T560 thinkpad, its not booting. Only way I can make it work is to boot windows 10 vanilla from a USB let it create the partitions then only format the main partition then apply the image.

    1. Not as-is. The script needs some modification as one of the other commenters pointed out. I’m still working on refining my version into something that’s easy for others to understand as well.

Leave a Reply