Current Known Issue: With the Windows 10 1903 ADK on 64-bit, the Windows System Image Manager (WSIM) will fail to generate a catalogue. Microsoft has issued a fix which you can download here. The fix contains two updated files, ImageCat.exe and ImgMgr.exe which need to be copied to the location the ADK is installed. By default the location is: C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools\WSIM. After installation you will still not be able to access the WSIM through MDT, but launching WSIM manually and then opening the install.wim file for the Operation System you wish to change, and the XML answer file which will be located in \\server\share\Control\Task-Sequence-ID\Unattend.xml. Many thanks to reader Mark Stenglein for letting me know about this in the comments!
Important note: If you are using Enterprise or Education editions of Windows 10, from 1809 onwards, the xx09 versions of Windows 10 get 30 months of support, over the usual 18 months that the xx03 versions get. So you may wish to reconsider if you deploy the xx03 version at all and just wait for the xx09 update. Here’s some official information from Microsoft here.
Continuing from a previous post: Building A Windows 10 1903 (May 2019 Update) Reference Image with MDT, this post will walk through creating a Deployment Share to deploy the Windows 10 reference image. It is assumed that you have a Server or PC with Microsoft Deployment Toolkit and it’s dependencies installed and have been through the post previously mentioned.
Creating the Deployment Share
- Open the Deployment Workbench from the Start Menu.
- Right click on Deployment Shares.
- Select New Deployment Share.
- Enter the path for the Deployment Share: E:\Deploy.
- Enter the Share name: Deploy$.
- Give the share a description.
- On the Options screen, accept the defaults as you can change them later.
- Complete the wizard to create the share.
- By default, the share permissions are set the local administrators group. We’ll revisit this later.
Add an Operating System
- Go to Deployment Workbench > Operating Systems.
- Right click and select Import Operating System.
- In the wizard, select Custom image file and then navigate to the Captures folder of the Build Deployment Share as the Source file.
- When prompted to Specify operating system setup files, select Setup files are note needed.
- For the destination directory name enter a name that you want to use and complete the wizard.
- Go to the Operating Systems node and rename the reference image you just captured to something shorter and more readable.
Create a Task Sequence
- In Deployment Workbench, go to Task Sequences.
- Right click and select New Task Sequence.
- For the ID enter: W10-1903.
- Name it Deploy Windows 10 1903.
- Select Standard Client Task Sequence.
- For the Operating System, select the custom image that you imported previously.
- Select Do not specify a product key at this time if you are using KMS.
- Enter an Organization name.
- Enter the local Administrator password.
- Complete the wizard.
Now we’ll configure the Task Sequence.
Configuring the Task Sequence
- Right click on the Task Sequence just created and select Properties.
- Expand the Initialization folder in the left hand pane.
- Go to the Gather local only item.
- In the Properties window select Gather local data and process rules.
- Enter the following in the Rules file: customsettings.ini
- Go to the State Restore folder and select Windows Update (Pre-Application Installation).
- On the right side of the Properties window, go to the Options tab.
- Uncheck the Disable this step tick box and do the same with Windows Update (Post-Application Installation).
- Select the Install Applications item and check the Disable this step tick box.
- 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.
- Go to the the Server or PC where the Deployment Share is hosted.
- Give the user mdt_admin Full Control share permissions and Full Control permissions to all the files and folders in the Deployment Share.
- 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.
- In Deployment Workbench, right click the Deployment Share and select Properties.
- Select the Rules tab and click the Edit Bootstrap.ini button.
- Add the settings below to the Bootstrap.ini.
- Close and Save the Bootstrap.ini
[Settings] Priority=Default [Default] DeployRoot=\\SERVER-NAME\Deploy$ SkipBDDWelcome=YES
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 the machine to a domain, and so you should either create an account that does or use an existing one here.
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 using 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% OSInstall=Y SkipCapture=YES SkipAdminPassword=YES SkipProductKey=YES SkipComputerBackup=YES SkipBitLocker=YES 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 JoinDomain=contoso DomainAdmin=mdt_admin DomainAdminPassword=p@ssw0rd MachineObjectOU=OU=PCs,DC=contoso,DC=com 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
- In Deployment Workbench, right click on the Deployment Share.
- Select Update Deployment Share.
- Select Completely regenerate the boot images.
- 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 located 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, you should append -deploy to the end of this new ISO.
Create a new VM in Hyper-V with the following configuration:
- 2x vCPUs
- 4GB of RAM
- Network Adapter with access the local network.
- Virtual Hard Drive of at least 40GB, preferably on an SSD.
- Boot from CD using the LiteTouchPE_x64-deploy.iso from MDT.
- If using Hyper-V on Windows 10 1709 and 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 log in screen. Here you should log in with 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 machine about to be imaged and it will also be added to Active Directory under this name.
- Click Next and the task sequence will begin.
The Task Sequence will install Windows 10 1903 from the reference image created in the previous post. If you added the optional Applications to the reference image Task Sequence they will be included also. Windows Update will run from the WSUS server and the VM will also be added to the Active Directory domain. When this process completes the VM will be shutdown.
This completes the basic testing of the deployment. 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.
- Using an existing Windows 10 install navigate to Settings > System > Default apps.
- Set the Default apps and any other file associations as required.
- Open Windows PowerShell (Admin) by right-clicking on the Windows/Start button or pressing Win + X.
- In the PowerShell window type the following and press enter:
Dism /Online /Export-DefaultAppAssociations:C:\AppAssoc.xml
- After a few seconds you should see The operation completed successfully in the PowerShell window.
- Navigate to C:\ and copy AppAssoc.xml to your MDT deployment share: \\SERVER-NAME\Deploy$\Applications\_scripts.
- Open the Deployment Workbench and go to Deployment Share > Task Sequences.
- Right click on the Task Sequence Deploy Windows 10 1903 and select Properties.
- Click on the Task Sequence tab and navigate to Postinstall > Configure.
- Click the Add button at the top of the Task Sequence actions view and go to General > Run Command Line.
- 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
- Click Apply to save the changes.
Now we’re going to configure how drivers are installed for the physical computers 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 it’s 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 set up 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 totally usable, so 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.
Important note: Avoid using WSUS to download and install drivers as it often makes WSUS difficult to manage due to all the drivers.
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. I use this method myself and although it can be time consuming, the results are worth it.
Once you have the drivers you require, we need to add them to MDT.
- Open the Deployment Workbench.
- Navigate to Deployment Share > Out-of-Box Drivers.
- Right click and select New Folder, call the folder Windows 10 x64.
- Right click on the Windows 10 x64 folder and select New Folder.
- Name the folder a human readable name for the model of device you’ll be adding drivers for.
- Right click on the folder you just created and create folders for each driver type you’ll be adding, eg. Graphics, Chipset, Bluetooth.
- Right click on a driver type folder and select Import Drivers.
- Enter the source directory of the drivers for that driver type.
- Check the Import drivers even if they are duplicates of an existing driver check box.
- Click Next and complete the wizard. The wizard will copy all the files needed to the driver type folder.
- 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.
- Go to the Deployment Workbench and right click on the Deployment Share, select Properties.
- Go to the Rules tab in the Properties window.
- Enter the following text under the [Settings] section but after the Properties.
- 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 1903. 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:
- Boot the device in question into the deployment environment and press F8 to bring up a command prompt.
- Type ipconfig and if you have an IP address, you should not have to add network adaptor drivers
- 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:
- In the Deployment Workbench, go to Deployment Share > Out-of-Box Drivers.
- Right click and select New Folder, call the folder WinPE x64.
- Right click on the WinPE x64 folder and select New Folder.
- Name the folder a suitable name for the model of device you’ll be adding drivers for.
- Right click on the folder you just created and create folders for each driver type you’ll be adding, eg. Storage, Network.
- To import the drivers, right click on a driver type folder and select Import Drivers.
- Enter the source directory of the drivers and tick the Import drivers even if they are duplicates of an existing driver check box.
- Click Next and complete the wizard. The wizard will copy all the files needed to the driver type folder.
- Repeat steps 6-8 for each driver type required.
- Now we must create a Selection Profile for WinPE x64.
- Go to Advanced Configuration > Selection Profiles.
- Right click on Selection Profiles and select New Selection Profile.
- Enter WinPE x64 as the Selection profile name.
- In the folders list navigate to DS001:\ > Out-of-Box Drivers > WinPE x64 and check the box next to the folder.
- Click Next > Next > Finish to complete the wizard.
- Right click on the Deployment Share and select Properties.
- Go to the Windows PE tab and change the Platform drop down menu to x64.
- Go to the Drivers and Patches tab, and change the Selection profile drop down menu to WinPE x64.
- 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.
- Click Apply to save the changes, click OK to close the Properties window.
- Right click the Deployment Share and select Update Deployment Share.
- Select Completely regenerate the boot images, and then Next. The boot images will be regenerated with the drivers included.
- Click Finish to complete the wizard.
The MDT boot media should now have the network/storage drivers required.
You now have a reference image for Windows 10 1903 which is ready to deploy. This concludes my walkthrough on building and deploying WIndows 10 1903.
I take great care to test my ideas and make sure my articles are accurate before posting, however mistakes do slip through sometimes. If you’d like to get in touch with me please use the comments, Twitter (you can tweet me and my DMs are open) or my contact form.
I hope this article helps you out, please consider supporting my work here. Thank you.