Building a Windows 10 v1809 reference image using Microsoft
Deployment Toolkit (MDT)
By Johan Arwidmark / October 3, 2018
Share
Tweet
Share
Here is a step-by-step quick guide on building the perfect Windows 10 v1809 reference image using MDT 8450, Windows
ADK 10 v1809, and WinPE Addon for Windows ADK 10 v1809. If you are looking for a Windows 7 version of this guide,
check this post: https://deploymentresearch.com/521/Back-to-Basics-Building-a-Windows-7-SP1-Reference-Image-using-
MDT-2013-Update-2
Note: Since back in the Windows Vista timeframe, there is no technical requirement to create reference images in order
to deploy Windows. The main reason for doing it is just deployment speed, and to some extent network efficiency (WIM
images are highly compressed). However, in a world with better and better peer to peer solutions, you can make
deployments go quite fast even without a reference image.
Software Requirements
MDT 8450 can be installed either on a file server, or on your own laptop, but in this scenario I use a file server named
MDT01. MDT 8450 requires Windows ADK 10 v1709 or later, but for Windows 10 v1809 you should use Windows ADK
10 v1809, and the WinPE Addon for Windows ADK 10 v1809. I also recommend to download the various Visual C++
runtimes to include them in your reference image.
In this guide I also assume that you have a local WSUS server in your network, to which you have approved Windows 10
updates, Feature Packs (to get Microsoft .NET Framework updates) and Developer Tools, Runtimes and Redistributables
/ Visual Studio* (to get updates to Visual C++ runtimes).
Note: If you want to build a Windows 10 reference image for a virtual environment, like SCVMM, simply follow this guide
to get the WIM file, and then use the Convert-WindowsImage.ps1 script on TechNet Script Center / Gallery to convert it to
a VHD or VHDX file.
For this guide you need the following software.
Windows 10 Enterprise v1809 (make sure to use media released in Nov 13, 2018 or later).
Windows ADK 10 v1809: Windows ADK 10 page on MSDN:
WinPE Addon for Windows ADK 10 v1809: Windows ADK 10 page on MSDN:
Microsoft Deployment Toolkit (MDT) 8450: http://www.microsoft.com/en-us/download/details.aspx?id=54259
Visual C++ runtimes (2010,2012,2013 and 2017) available on Microsoft Download Center.
Visual C++ runtimes install wrapper: http://github.com/DeploymentResearch/DRFiles/blob/master/Scripts/Install-
MicrosoftVisualC%2B%2Bx86x64.wsf
Script to disable Windows Store updates during build and
capture: http://github.com/DeploymentResearch/DRFiles/blob/master/Scripts/Config-DisableWindowsStoreUpdates.wsf
Script to enable Windows Store updates
again: http://github.com/DeploymentResearch/DRFiles/blob/master/Scripts/Config-EnableWindowsStoreUpdates.wsf
Script to clear WSUS references from the image: http://gallery.technet.microsoft.com/Remove-WSUS-configuration-
86d3f21c
Script to relax default deployment share
permissions: http://github.com/DeploymentResearch/DRFiles/blob/master/Scripts/Set-MDTBuildLabPermissions.ps1
Note: Visual C++ runtimes 2005 and 2008 are not included since they are no longer supported, and doesn't get any
security updates.
Step-by-Step Guide
The entire process for creating a Windows 10 image using MDT takes about 40 – 60 minutes, fully automated. The initial
setup of the solution takes about 30 – 45 minutes if done manually, and about 10 minutes if scripted. This guide covers
the following seven steps:
Step 1 – Install Windows 10 ADK v1809, WinPE Addon for Windows ADK 10 v1809, and MDT 8450
Step 2 – Create the MDT Build Lab Deployment Share
Step 3 – Import the Windows 10 v1809 operating system
Step 4 – Add applications
Step 5 – Create the MDT Task Sequence
Step 6 – Configure the deployment share
Step 7 – Create Windows Reference Images
Step 1 – Install Windows 10 ADK v1809,
WinPE Addon for Windows ADK 10
v1809, and MDT 8450
In this example I have a file server named MDT01, running Windows Server 2019 (Windows Server 2016 is is fine too ).
1. On MDT01, install Windows 10 ADK v1809, and select the following components:
Deployment Tools
Imaging and Configuration Designer (ICD)
Configuration Designer
User State Migration Tool (USMT
Windows ADK 10 v1809 Setup when installed on Windows Server 2019.
2. Install WinPE Addon for Windows 10 ADK v1809, and select the following component:
Windows Preinstallation Environment (Windows PE)
Installing WinPE Addon for Windows ADK 10 v1809.
3. Install MDT 8450 using the defa
ult settings.
Installing MDT 8450.
Step 2 – Create the MDT Build Lab
Deployment Share
1.
1. On MDT01, using the Deployment Workbench (available on the start screen), right-click Deployment Shares and
select New Deployment Share. Use the following settings for the New Deployment Share Wizard (my data volume on
MDT01 is E:)
a. Deployment share path: E:\MDTBuildLab
b. Share name: MDTBuildLab$
c. Deployment share description: MDT Build Lab
d. Options:
2. Once the deployment share is created you also want to relax the security a bit. MDT locks it down to hard by default.
Use the following PowerShell script to set some better permissions (modify script to fit your
environment): http://github.com/DeploymentResearch/DRFiles/blob/master/Scripts/Set-MDTBuildLabPermissions.ps1
3. Copy the following scripts to the E:\MDTBuildLabScripts folder:
Config-DisableWindowsStoreUpdates.wsf
Config-EnableWindowsStoreUpdates.wsf
Step 3 – Import the Windows 10 operating
system
On MDT01, mount the Windows 10 Enterprise x64 v1809.iso media (or whatever you named it). On my server it was
mounted to the D: drive.
1. Using the Deployment Workbench, expand the Deployment Shares node, expand MDT Build Lab, select
the Operating Systems node and create a folder
named Windows 10.
2. Right-click the Windows 10 node, and select Import Operating System. Use the following settings for the Import
Operating System Wizard.
1. Full set of source files
2. Source directory: D:\
3. Destination directory name: W10X64v1809
4. After adding the operating system, in the Windows 10 node, change the operating system name to Windows 10
Enterprise x64 v1809.
Note: The Windows 10 v1809 media comes with many Windows version, in the below example I simply removed all but
the Enterprise version.
The Windows 10 Enterprise x64 v1809 operating system imported to deployment workbench.
Step 4 – Add applications
Not a hard requirement, but it make sense to add at least the various Visual C++ runtimes to your reference because
quite frankly, you are installing Windows 10 to run apps, and many apps are depending on one or more of these runtimes.
As you probably know, there are x86 and x64 versions of the runtimes, and for Windows 10 x64, you need both.
Note: Visual C++ 2015 is included in Visual C++ 2017, so you only need to install Visual C++ 2017.
For the Visual C++ runtimes, you make the install a bit easier by using a VBScript wrapper that installs all of them.
1. On MDT01, extract the Visual C++ runtimes install wrapper to C:Setup.
2. Download each runtime from Microsoft Download Center, and copy to the corresponding folder in C:\Setup\Install –
Microsoft Visual C++ – x86-x64\source.
Each runtime folder.
3. Using the Deployment Workbench, expand Deployment Shares / MDT Build Lab / Applications and create a folder
named Microsoft.
4. Right-click the Microsoft folder, and select New Application. Use the following settings for the New Application
Wizard:
Application with source files
Publisher:
Application name: Install – Microsoft Visual C++ – x86-x64
Version:
Source Directory: C:\Setup\Install – Microsoft Visual C++ – x86-x64
Specify the name of the directory that should be created: Install – Microsoft Visual C++ – x86-x64
Command Line: cscript Install-MicrosoftVisualC++x86x64.wsf
Working directory:
5. Download the WSUS reference cleanup script (Script to clear WSUS references from the
image: http://gallery.technet.microsoft.com/Remove-WSUS-configuration-86d3f21c ), and extract to C:\Setup\Action-
CleanWSUSConfig.
6. Using the Deployment Workbench, expand Deployment Shares / MDT Build Lab / Applications and create a folder
named ViaMonstra.
7. Right-click the ViaMonstra folder, and select New Application. Use the following settings for the New Application
Wizard:
Application with source files
Publisher:
Application name: Action – Clean WSUS Config
Version:
Source Directory: C:\Setup\Action-CleanWSUSConfig
Specify the name of the directory that should be created: Action – Clean WSUS Config
Command Line: cscript Action-CleanWSUSConfig.wsf
Working directory:
Action – Clean WSUS Config application added to MDT.
Step 5 – Create and
Configure the MDT Task Sequence
1. On MDT01, using the Deployment Workbench, in the MDT Build Lab deployment share, select the Task
Sequences node, and create a folder named Windows 10.
2. Expand the Task Sequences node, right-click on the Windows 10 node, and select New Task Sequence. Use the
following settings for the New Task Sequence Wizard:
1. Task sequence ID: REFW10-X64-001
2. Task sequence name: Windows 10 Enterprise x64 v1809
3. Task sequence comments: Reference Build
4. Template: Standard Client Task Sequence
5. Select OS: Windows 10 Enterprise x64 v1809
6. Specify Product Key: Do not specify a product key at this time
7. Full Name: ViaMonstra
8. Organization: ViaMonstra
9. Internet Explorer home page: about:blank
10. Do not specify an Administrator password at this time
3. Edit the task sequence by navigating to the Task Sequences / Windows 10 folder, right-click the Windows 10
Enterprise x64 v1809 task sequence, and select Properties.
4. On the Task Sequence tab, configure the Windows 10 Enterprise x64 v1809 task sequence with the following settings:
1. Postinstall. After the Configure action, add a Run Command Line action with the following settings:Name: Disable
Windows Store Updates
Command Line: cscript.exe "%SCRIPTROOT%\Config-DisableWindowsStoreUpdates.wsf"
2. State Restore. After the Tattoo action, add a new Group action with the following setting:Name: Custom Tasks (Pre-
Windows Update)
3. State Restore. Enable the Windows Update (Pre-Application Installation) action.
4. State Restore. Enable the Windows Update (Post-Application Installation) action.
5. State Restore. After the Windows Update (Post-Application Installation) action, rename the existing Custom
Tasks group to Custom Tasks (Post-Windows Update).
6. State Restore / Custom Tasks (Pre-Windows Update). Add a new Install Roles and Features action with the following
settings:Name: Install – Microsoft NET Framework 3.5.1
Select the operating system for which roles are to be installed: Windows 10
Select the roles and features that should be installed: .NET Framework 3.5 (includes .NET 2.0 and 3.0)
7. State Restore – Custom Tasks (Pre-Windows Update). After the Install – Microsoft NET Framework 3.5.1 action, add a
new Install Application action with the following settings:
? Name: Install – Microsoft Visual C++ – x86-x64
? Install a Single Application: Install – Microsoft Visual C++ – x86-x64
8. After the Install – Microsoft Visual C++ – x86-x64 action, add a Computer Restart action.
9. State Restore. After the Apply Local GPO Package action, add a new Group action with the following
setting:Name: Custom Tasks (Cleanup)
10. State Restore – Custom Tasks (Cleanup). Add a new Install Application action with the following settings:
1. Name: Action – Clean WSUS Config
2. Install a Single Application: Action – Clean WSUS Config
11. State Restore / Imaging / Capture Image. After the Gather local only action, add a Run Command Line action with the
following settings:Name: Enable Windows Store Updates
Command Line: cscript.exe "%SCRIPTROOT%\Config-EnableWindowsStoreUpdates.wsf"
12. Click OK.
Task Sequence configured for the reference image build and capture.
Step 6 – Configure the deployment share
To configure the deployment settings, you modify the two rules files (Bootstrap.ini and CustomSettings.ini). You can do
the either via the MDT Build Lab deployment share properties, or directly in the file system, in the E:\MDTBuildLab\Control
folder. Below you find the configurations I used in this guide.
Note: In my environment, my WSUS server is named WSUS01, and I'm using the default WSUS port in Windows Server
2012 R2 which is 8530.
Bootstrap.ini
[Settings] Priority=Default
[Default] DeployRoot=\\MDT01\MDTBuildLab$
UserDomain=VIAMONSTRA
UserID=MDT_BA
UserPassword=P@ssw0rd
SkipBDDWelcome=YES
CustomSettings.ini
[Settings] Priority=Default
[Default] _SMSTSORGNAME=ViaMonstra
UserDataLocation=NONE
ComputerBackupLocation=NETWORK
DoCapture=YES
OSInstall=Y
AdminPassword=P@ssw0rd
TimeZoneName=Pacific Standard Time
JoinWorkgroup=WORKGROUP
HideShell=NO
FinishAction=SHUTDOWN
WSUSServer=http://wsus01.corp.viamonstra.com:8530
ApplyGPOPack=NO
BackupShare=MDT01MDTBuildLab$
BackupDir=Captures
BackupFile=%TaskSequenceID%_#month(date) & "-" & day(date) & "-" & year(date)#.wim
SkipAdminPassword=YES
SkipProductKey=YES
SkipComputerName=YES
SkipDomainMembership=YES
SkipUserData=YES
SkipLocaleSelection=YES
SkipTaskSequence=NO
SkipTimeZone=YES
SkipApplications=YES
SkipBitLocker=YES
SkipSummary=YES
SkipRoles=YES
SkipCapture=NO
SkipFinalSummary=YES
1. On MDT01 in the E:\Labfiles\LTI Support Files\MDT Build Lab\Control folder, modify
the Bootstrap.ini and CustomSettings.ini per the above examples.
2. Using the Deployment Workbench, right-click the MDT Build Lab deployment share and select Properties.
1. In the Windows PE tab, in the Platform dropdown list, make sure x86 is selected. Then in the Lite Touch Boot Image
Settings area, configure the following settings:
1. Image description: MDT Build Lab x86
2. ISO file name: MDT Build Lab x86.iso
2. Still in the Windows PE tab, select the Drivers and Patches tab, and configure the following:
1. Selection profile: Nothing
2. Select the Include all drivers from selection profile option
Configuring the deployment share not to add the Windows 10 CU into the boot image.
3. In the Windows PE tab, in the Platform dropdown list, make sure x64 is selected. Then in the Lite Touch Boot Image
Settings area, configure the following settings:
1. Image description: MDT Build Lab x64
2. ISO file name: MDT Build Lab x64.iso
4. Still in the Windows PE tab, select the Drivers and Patches tab, and configure the following:
1.
1. Selection profile: Nothing
2. Select the Include all drivers from selection profile option
5. Click OK.
6. Update the deployment share, by right-clicking the MDT Build Lab deployment share and select Update Deployment
Share. Use the default Options for the Update Deployment Share wizard.
The contents of the E:\MDTBuildLab\Boot folder after updating the deployment share.
Step 7 – Create Windows Reference
Images
Create a Windows 10 Reference WIM Image, fully automated.
1. On MDT01, copy the E:\MDTBuildLab\Boot\MDT Build Lab x64.iso file to your VMware or Hyper-V machine.
2. Create a virtual machine named REF001, assign it two vCPUs and 4 GB RAM. Then mount MDT Build Lab x64.iso on
the virtual machine.
3. Start the REF001 virtual machine, and allow it to boot. Then complete the Deployment Wizard using the below settings:
1. Select a task sequence to execute on this computer: Windows 10 Enterprise x64 v1809
2. Specify whether to capture an image: Capture an image of this reference computer.
1. Location:
2. File name:
The task sequence will now do the following:
Install the Windows 10 Enterprise operating system.
Install the added applications, roles, and features.
Stage WinPE on the local disk.
Run Sysprep and reboot into WinPE.
Capture the Windows 10 installation to a WIM file.
MDT capturing a Windows 10 Image.
Resources
Note: Please also check these posts:
Fixing why Sysprep fails in Windows 10 due to Windows Store updates
https://deploymentresearch.com/615/Fixing-why-Sysprep-fails-in-Windows-10-due-to-Windows-Store-updates
Remove WSUS configuration before capturing a Reference Image with MDT (by @NickolajA )
http://www.scconfigmgr.com/2014/12/29/remove-wsus-configuration-before-capturing-a-reference-image-with-mdt/
Image Factory
Automate this process even further (you still need to do the step in this guide first), check out the Image Factory for
Hyper-V solution by Mikael Nystrom (@mikael_nystrom).
http://github.com/DeploymentBunny/ImageFactoryV3ForHyper-V