Deploy Windows 10 2004 (20H1) Reference Image

News and Updates

An essential update for Microsoft Deployment Toolkit (MDT_KB4564442) has been released: This update fixes two issues around booting. Details on how to install it are on Michael Niehaus’ blog post here. and you can download the fix here. I will add installation instructions in the walkthrough below. NOTE: If you have existing shares you will need to copy the files from the extracted update to %DeployRoot%\Tools and overwrite the existing files in all shares. You will then need to update the deployment shares and regenerate the boot media.

Lifecycle Support Notes from Microsoft: The Windows 10 Enterprise and Education 1709 support window has been extended six months to October 13th 2020 due to the COVID-19 pandemic.

If you are using Enterprise or Education editions of Windows 10, from 1809 onwards the YY09 (YYH2) versions of Windows 10 will get 30 months of support and the YY03 versions will only get 18 months. So you may want to consider if you deploy the YY03 versions at all and focus on YY09 releases. Here’s the official information from Microsoft here.

 

This article is based on current information as of 2020-06-04. I will update it in future as things progress.

In this article as with my previous ones we will walk through configuring Microsoft Deployment Toolkit to deploy the reference image created in the previous article: Build and Capture Windows 10 2004 (20H1) Reference Image.

 

Installing the MDT Update: MDT_KB4564442

Extract the files from the self-extracting archive, and copy them to %ProgramFiles%\Microsoft Deployment Toolkit\Templates\Distribution\Tools replacing the existing files.

If you have existing shares you will need to copy the files from the update to %DeployRoot%\Tools and overwrite the existing files in all shares. You will then need to update the deployment shares and recreate boot media.

 

Creating the Deployment Share

  1. Open the Deployment Workbench from the Start Menu.
  2. Right click on Deployment Shares.
  3. Select New Deployment Share.
  4. Enter the path for the Deployment Share: E:\Deploy.
  5. Enter the Share name: Deploy$.
  6. Give the share a description.
  7. On the Options screen, accept the defaults as we can change them later.
  8. Complete the wizard to create the share.
  9. By default, the share permissions are set the local administrators group. We’ll revisit this later.

 

Add an Operating System

  1. Go to Deployment WorkbenchOperating Systems.
  2. Right click and select Import Operating System.
  3. In the wizard, select Custom image file and then navigate to the Captures folder of the Build Deployment Share as the Source file.
  4. When prompted to Specify operating system setup files, select Setup files are not needed.
  5. For the destination directory name enter a name that you want to use and complete the wizard.
  6. Go to the Operating Systems node and rename the reference image we just captured to something more readable.

 

Create a Task Sequence

  1. In Deployment Workbench, go to Task Sequences.
  2. Right click and select New Task Sequence.
  3. For the ID enter: W10-2004.
  4. Name it Deploy Windows 10 2004.
  5. Select Standard Client Task Sequence.
  6. For the Operating System, select the custom image that we imported previously.
  7. Select Do not specify a product key at this time if you are using KMS.
  8. Enter an Organization name.
  9. Enter the local Administrator password.
  10. Complete the wizard.

Now we’ll configure the Task Sequence.

 

Configuring the Task Sequence

  1. Right click on the Task Sequence just created and select Properties.
  2. Expand the Initialization folder in the left-hand pane.
  3. Go to the Gather local only item.
  4. In the Properties window select Gather local data and process rules.
  5. Enter the following in the Rules file: customsettings.ini
  6. Go to the State Restore folder and select Windows Update (Pre-Application Installation).
  7. On the right side of the Properties window, go to the Options tab.
  8. Uncheck the Disable this step tick box and do the same with Windows Update (Post-Application Installation).
  9. Select the Install Applications item and check the Disable this step tick box.
  10. Click Apply and close the Task Sequence.

 

Securing the Deployment Share

In the previous post we created a user called mdt_admin in Active Directory to be used as a service account. We must give that user access to the new deployment share we have created here.

  1. Go to the server or PC where the Deployment Share is hosted.
  2. Give the user mdt_admin Full Control share permissions and Full Control permissions to all the files and folders in the Deployment Share.
  3. You may also want to give similar permissions to users or groups that are going to be using the deployment share.

Next, we need to configure the Bootstrap.ini and the CustomSettings.ini files to control certain aspects of the deployment environment. The settings below are a bare minimum configuration from my lab, and you may want to add more to overtime.

 

Configure Bootstrap.ini

  1. In Deployment Workbench, right click the Deployment Share and select Properties.
  2. Select the Rules tab and click the Edit Bootstrap.ini button.
  3. Add the settings below to the Bootstrap.ini.
  4. Close and Save the Bootstrap.ini

[Settings]
Priority=Default

[Default]
DeployRoot=\\SERVER-NAME\Deploy$
SkipBDDWelcome=YES

 

Configure CustomSettings.ini

The settings below deserve some explanation. The [Virtual Machine] section is regarding driver installs which we’ll cover more later in this post. The Join Domain section is important. Here I’ve put the mdt_admin account to use as the account to join the device being imaged to the domain contoso.com. If you are following this guide to the letter, the mdt_admin account would not have the appropriate permissions to join a device to a domain, and so you should either give it the permissions required or create a new account for that specific purpose.

The other settings are location preferences relevant to the UK and resolution settings which prevent the finished device from defaulting to a resolution of 1024 x 768, and instead use the recommended resolution Windows receives from the display.

On the Rules tab of the Deployment Share properties window, add the settings below.

[Settings]
Priority=Model, Default, SetOSD
Properties=OSDPrefix

[Virtual Machine]
DriverGroup001=Virtual Machine
DriverSelectionProfile=nothing
OSDComputerName=%TaskSequenceID%

[Default]
_SMSTSORGNAME=Deploy
_SMSTSPackageName=%TaskSequenceName%

; MDT deployment settings
OSInstall=Y
SkipCapture=YES
SkipAdminPassword=YES
SkipProductKey=YES
SkipComputerBackup=YES
SkipBitLocker=YES

; Locale and screen res
TimeZoneName=GMT Standard Time
KeyboardLocale=0809:00000809
UILanguage=en-GB
UserLocale=en-GB
KeyboardLocale=en-GB
BitsPerPel=32
VRefresh=60
XResolution=1
YResolution=1
HideShell=YES

; Join Domain
JoinDomain=contoso
DomainAdmin=mdt_admin
DomainAdminPassword=p@ssw0rd
MachineObjectOU=OU=PCs,DC=contoso,DC=com

; Other Settings
SkipUserData=YES
SkipDomainMembership=YES
SkipLocaleSelection=YES
SkipTimeZone=YES
SkipSummary=YES
SkipFinalSummary=YES
FinishAction=SHUTDOWN
WSUSServer=http://SERVER-NAME:8530
SLShare=\\SERVER-NAME\deploy$\Logs
EventService=http://SERVER-NAME:9800

We now need to create the boot media to boot the VM into the deployment environment.

 

Creating the Boot Media

  1. In Deployment Workbench, right click on the Deployment Share.
  2. Select Update Deployment Share.
  3. Select Completely regenerate the boot images.
  4. Complete the wizard. It will take some time to create the boot images.

 

Testing the Task Sequence

To test everything, we need to copy the ISO file that we just generated. It is in the Boot folder in the Deployment Share. Go to the Server or PC that is hosting the deployment share and navigate to the boot folder. Inside there should be a file named LiteTouchPE_x64.iso. Copy this file to a location where a Hyper-V Virtual Machine will be able to access it. To prevent confusion with the ISO we generated from the Build deployment share, we’ll append -deploy to the name of this new ISO.

Create a new VM in Hyper-V with the following configuration:

  • For Hyper-V Only: Generation 1, not 2. I’ve had issues reported with Gen2 VMs
  • At least 2x vCPUs
  • At least 4GB of RAM
  • Network Adaptor with access the local network.
  • Virtual Hard Drive of at least 40GB, preferably on fast media.
  • Boot from CD using the LiteTouchPE_x64-deploy.iso from MDT.
  • If using Hyper-V on Windows 10 1709 or above, make sure Use Automatic Checkpoints is disabled.

Start the VM and it will boot from the LiteTouchPE_x64-deploy.iso into the deployment environment, you will be presented with a login screen and here you should login with the Active Directory credentials that have access to the Deployment Share. Once logged in you will be presented with a screen with the name of the Task Sequence you created earlier. Select your Task Sequence and click Next. You’ll be prompted to enter a name for the device, it will also be added to Active Directory under this name. Click Next and the task sequence will begin.

When the task sequence completes the VM will be shutdown.

This completes the basic testing of the deployment task sequence. Now we’ll get into drivers and further configuration.

 

Setting the Default Application Associations

Here’s how to configure the default application associations in the deployment task sequence.

  1. Using an existing Windows 10 install navigate to Settings > System > Default apps.
  2. Set the Default apps and any other file associations as required.
  3. Open Windows PowerShell (Admin) by right-clicking on the Windows/Start button or pressing Win + X.
  4. In the PowerShell window type the following and press enter:
    Dism /Online /Export-DefaultAppAssociations:C:\AppAssoc.xml
  5. After a few seconds you should see The operation completed successfully in the PowerShell window.
  6. Navigate to C:\ and copy AppAssoc.xml to your MDT deployment share: \\SERVER-NAME\Deploy$\_custom.
  7. Open the Deployment Workbench and go to Deployment Share > Task Sequences.
  8. Right click on the Task Sequence Deploy Windows 10 2004 and select Properties.
  9. Click on the Task Sequence tab and navigate to Postinstall > Configure.
  10. Click the Add button at the top of the Task Sequence actions view and go to General > Run Command Line.
  11. Enter Set Default App Associations in the Name field, and in the Command line field enter:
    Dism.exe /Image:%OSDisk%\ /Import-DefaultAppAssociations:%DEPLOYROOT%\Applications\_scripts\AppAssoc.xml
  12. Click Apply to save the changes.

 

Driver Management

Now we’re going to configure how drivers are installed for the physical devices we’re going to deploy Windows 10 to. There are a few ways to do this, here I’ll show the method I’ve been using which has worked very well for a variety of manufactures and models of devices.

The first thing you’ll need is the model numbers for all the devices you want to roll out the image to. You can find this out by booting the device in to its current version of Windows or the deployment environment using the LiteTouch_x64.iso boot disc or PXE booting, which I haven’t covered in this post but here’s a previous post I wrote on how to setup PXE booting for MDT: PXE Booting for Microsoft Deployment Toolkit.

When the device is booted into the deployment environment, press F8 to get a command prompt, and typing out the following command:

wmic computersystem get model

The output of the command is the model number you’ll need.

The next thing you’ll need is the drivers. I’ve found Windows 10 is good at installing missing drivers from Windows Update, but it can take some time and it would be better for the device to be running with all the drivers it needs once deployment has completed.

Windows 10 tends to have some drivers built right in and I’ve found they are usually very usable, so generally I only add drivers to MDT that Windows 10 cannot find. Deploy the reference image to each type of device you have and use Device Manager to see what’s missing.

If you are missing drivers, go to Settings > Windows Update and use Check online for updates from Microsoft Update which should find and install the relevant drivers. Then using the Update History and see what you need to find and import into MDT.

Note: I recommend avoiding using WSUS to download and install drivers as it inflates the WSUS database, slowing WSUS down and making it difficult to manage.

To import drivers into MDT you’ll need the INF files. Most large manufacturers do a decent job of providing drivers that can be used with MDT. Should you have difficulty with them you can use the Microsoft Update Catalog to search for and download the specific drivers that Windows Update installs and use them with MDT.

Once you have the drivers you require, we need to add them to MDT.

  1. Open the Deployment Workbench.
  2. Navigate to Deployment Share > Out-of-Box Drivers.
  3. Right click and select New Folder, call the folder Windows 10 x64.
  4. Right click on the Windows 10 x64 folder and select New Folder.
  5. Name the folder a human readable name for the model of device you’ll be adding drivers for.
  6. Right click on the folder you just created and create folders for each driver type you’ll be adding, eg. Graphics, Chipset, Bluetooth.
  7. Right click on a driver type folder and select Import Drivers.
  8. Enter the source directory of the drivers for that driver type.
  9. Check the Import drivers even if they are duplicates of an existing driver check box.
  10. Click Next and complete the wizard. The wizard will copy all the files needed to the driver type folder.
  11. Repeat steps 7-10 for each driver type required.

 

We now need to edit the CustomSettings.ini to configure the driver location for each model.

  1. Go to the Deployment Workbench and right click on the Deployment Share, select Properties.
  2. Go to the Rules tab in the Properties window.
  3. Enter the following text under the [Settings] section but after the Properties.
  4. Once you’ve added in all the models required, click Apply to save the changes.
    [MODEL-NUMBER]
    DriverGroup001=Windows 10 x64\Human-Readable-Model-Number
    DriverSelectionProfile=nothing
    OSDPrefix=PC

    You’ll need to enter the above text for each model. Below is an example of my CustomSettings.ini for reference.

    [Settings]
    Priority=Model, Default, SetOSD
    Properties=OSDPrefix
    
    [HP 250 G5 Notebook PC]
    DriverGroup001=Windows 10 x64\HP 250 G3
    DriverSelectionProfile=nothing
    OSDPrefix=HP
    
    [80J2]
    DriverGroup001=Windows 10 x64\Lenovo E50
    DriverSelectionProfile=nothing
    OSDPrefix=LEN
    
    [Virtual Machine]
    DriverGroup001=Virtual Machine
    DriverSelectionProfile=nothing
    OSDPrefix=VM
    
    [Default]
    _SMSTSORGNAME=Deploy
    _SMSTSPackageName=%TaskSequenceName%
    UserDataLocation=NONE
    ComputerBackupLocation=\\SERVER-NAME\Deploy$\Captures
    OSDComputerName=%OSDPrefix%-%SerialNumber%
    ...
    
    

The Deploy deployment share is now configured to install drivers for the models specified.

Boot the physical device into the deployment environment and run the Deploy Windows 10 2004. After it completes, check Device Manager and all devices should be successfully installed.

 

Adding Drivers to the MDT Boot Image

It may be necessary to add drivers to the MDT Boot Image for devices such as storage or network adaptors.

To determine if drivers are required:

  1. Boot the device in question into the deployment environment and press F8 to bring up a command prompt.
  2. Type ipconfig and if you have an IP address, you should not have to add network adaptor drivers
  3. Type diskpart, and when diskpart has loaded, type list disk. If the local hard drive is listed, you should not need to add storage drivers.

If you do need to add drivers to the boot image:

  1. In the Deployment Workbench, go to Deployment Share > Out-of-Box Drivers.
  2. Right click and select New Folder, call the folder WinPE x64.
  3. Right click on the WinPE x64 folder and select New Folder.
  4. Name the folder a suitable name for the model of device you’ll be adding drivers for.
  5. Right click on the folder you just created and create folders for each driver type you’ll be adding, eg. Storage, Network.
  6. To import the drivers, right click on a driver type folder and select Import Drivers.
  7. Enter the source directory of the drivers and tick the Import drivers even if they are duplicates of an existing driver check box.
  8. Click Next and complete the wizard. The wizard will copy all the files needed to the driver type folder.
  9. Repeat steps 6-8 for each driver type required.
  10. Now we must create a Selection Profile for WinPE x64.
  11. Go to Advanced Configuration > Selection Profiles.
  12. Right click on Selection Profiles and select New Selection Profile.
  13. Enter WinPE x64 as the Selection profile name.
  14. In the folders list navigate to DS001:\ > Out-of-Box Drivers > WinPE x64 and check the box next to the folder.
  15. Click Next > Next > Finish to complete the wizard.
  16. Right click on the Deployment Share and select Properties.
  17. Go to the Windows PE tab and change the Platform drop down menu to x64.
  18. Go to the Drivers and Patches tab and change the Selection profile drop down menu to WinPE x64.
  19. Make sure that Include only drivers of the following types is selected and both Include all network drivers in the selection profile and Include all mass storage drivers in the selection profile are checked.
  20. Click Apply to save the changes, click OK to close the Properties window.
  21. Right click the Deployment Share and select Update Deployment Share.
  22. Select Completely regenerate the boot images, and then Next. The boot images will be regenerated with the drivers included.
  23. Click Finish to complete the wizard.

The MDT boot media should now have the network and/or storage drivers required.

You now have a reference image for Windows 10 2004 which is ready to deploy.

 

Please consider supporting my work:

  • Sign up using Patreon.
  • Support with a one-time payment using PayPal.

If you’d like to contact me please leave a comment, send me a tweet or DM, or send me a message via my contact form.

-Mike

Many thanks to my patrons!

Kayleigh Price
Mark Stenglein
Lukáš Maršálek
Michael Agu
Rick Olsen

5 thoughts on “Deploy Windows 10 2004 (20H1) Reference Image

Add yours

  1. Hi, what would be the way to name deployed computer by its serial number? If I do it like described here, I see in logs, when computer starts deployment, it gets name like MININT-xxxxxxx and later around step 60 it is renamed to Z-XXXXXXXXXXXXX and then it joins domain and turns off. So when I look at AD I have deployed computers with this Z-random names. I know it is somehow possible to put OSDComputerName=%SerialNumber% into Customsettings.ini, but when I do this, it starts deployment, but then it fails with some error about unable to acces unattend.xml, dont know why. Can you put rename command into Task sequence? I just need it to have some sensible name when it joins domain and turns off.

    Liked by 1 person

    1. Hi Lukas,

      You are correct – in the customsettings.ini file you’ll want to add OSDComputerName=%SerialNumber% – however, if the serial number is not embedded or contains characters that can’t be used as an AD name, or it is too long then adding to the domain will fail. You can find out what the BIOS is storing as the serial number by using the following command in cmd.exe: “wmic bios get serialnumber”. For info on my self built home PC it reports as: “System Serial Number” which would not work as an AD name.

      To enter a name at the time of imaging, just remove (or comment out with a semi-colon “;”) the OSDComputerName line.

      Hope this helps,
      -Mike

      Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Create a website or blog at WordPress.com

Up ↑

%d bloggers like this: