I’ve just downloaded the latest Windows 1709 Enterprise media and have run through some test deployments. However I noticed straight away that our company lock screen image wasn’t being set. Instead I was just seeing a plain blue background at the login prompt. Also when I logged in and locked the workstation I was seeing the default Microsoft image. Checking the Lock Screen settings in the settings app didn’t really help much either.


The solution for me was to change the following registry setting:


“DisableLogonBackgroundImage” with a DWORD value of “0”

This was previously set when we started deploying Windows 10 1507 to turn off the default Microsoft Hero Wallpaper at the login prompt.

It would appear that having this value set to 1 disables the Lock Screen wallpaper in Windows 10 1709 entirely.




There is presently a potential issue in setting language settings using unattend.xml when deploying Windows 10 1703 Enterprise x64. The language values may not be set during the OOBE / specialize phase. Errors may be logged in setupact.log. The blog I have written will go through how I have approached the issue.

In addition to this Paul Winstanley, who I have been exchanging information with on this matter, was unable to produce a working solution with the settings that have worked for me. He has ended up implementing different values in his unattend.xml after comparing my settings and logs. He was also seeing:

  • Win 10 hanging on the the ‘Just a moment’ screen indefinitely after a build
  • An error message ‘Oops something went wrong’ after the build had completed, which I was then allowed to skip past

Where I haven’t seen these problems.

His great write up on how he has approached the issue should be read and can be found here:


The Problem

Windows 10 1703 Enterprise has now been available in VLSC since early May. Eager for deployment testing I’ve updated my production environment with a new deployment and in-place upgrade task sequence and upgraded a few IT staff PC’s which is going well.

This process though wasn’t as straight forward as you would think. For starters I was getting problems with the OOBE processing step with my existing Windows 10 1607 unattend.xml settings. I wasn’t expecting this as you don’t normally have to change any language settings in an unattend file. Specifically I was seeing:

  • A prompt asking if I wanted to join my work network in the form of mydomain.com.au
  • A prompt asking what sort of display language I wanted to choose
  • Display language not being set correctly – AGAIN!
My Solution

I downloaded the following ISO’s:

  • SW_DVD5_WIN_ENT_10_1703_64BIT_English_MLF_X21-36478
  • SW_DVD5_NTRL_Win_10_1703_32-BIT_X64_MultiLang_LangPackAll_LIP_X21-35517
  • SW_DVD9_NTRL_Win_10_1703_64Bit_MultiLang_FOD_1_X21-35556

Extracted the Windows 10 1703 ISO and added to my MDT environment.

Created a new Build and Capture Task Sequence and added a step to:

  • Add the .NET 3.5 Framework Role
  • Remove unwanted modern applications
  • Enable the Windows Update steps

Using my existing build and capture environment I performed a build and capture to create an updated wim file with the latest updates. My build environment is as follows. Please don’t use ADK 1703 presently it has a nasty secure boot bug.

Server 1

  • Windows Server 2012 R2 x64
  • MDT 8443
  • ADK 1607

Server 2

  • Windows Server 2012 R2 x64
  • WSUS

Custom Settings.ini





I’m then importing the captured wim into my Configuration Manager 1610 instance running ADK 1607 and MDT 8443.

The Task Sequence I’m using is using MDT integration.

Windows 10 1703 appears to have made some significant changes in how Language is used. For my language pack to correctly be set as the display language and to avoid OOBE display language prompts my Unattend.xml file has the following settings.

For English (Australia).

specialize pass

oobeSystem pass



For Dutch.

specialize pass


oobeSystem pass



The main difference is that UILanguage needed to be changed to en-US. When I initially had this set to en-AU or en-GB it would fail to change it during the specialize / OOBE phase with 1703.

Updates to Task Sequence

To facilitate deploying Windows 10 1703, I’ve created two new packages.

  • Windows 10 1703 MDT Deploy Settings Package – This contains my unattend.xml and customsettings.ini (note no changes to customsettings.ini was required)

  • Windows 10 1703 Language Pack Package – This contains my language pack and additional feature on demand components to add text to speech etc support. This is not needed if you just wish to add multi-lingual display support. For English (Australia) as per below.

  • For Dutch as per below.

If your modifying/copying an existing Task Sequence don’t forget to also update the package setting in the Apply Operating System Image step so that your updated Unattend.xml is used along with any Gather steps.

To import the language pack I have done much the same as for 1607, just with referencing the new package.


The results are as follows with English (Australia). I have confirmed that Office uses English (Australia) and that browser spelling support both en-AU and en-US.

The results are as follows with Dutch:


For troubleshooting problems with language settings look at the UnattendGC.log that is located at c:\Windows\Panther\UnattendGC. As an example where I have applied the Dutch nl-NL language pack you can see that the settings have been processed successfully and logged.

Oh and by the way indexing is now definitely fixed in 1703 when searching from the taskbar. I applied this months May 2017 CU for 1703 and indexing continued to work 🙂




Credit goes to J v D on the myITforum Configuration Manager email list for his response to my question about how to resolve this. I have adapted elements of his solution to suit my own situation.

Lately I’ve been doing a lot of Windows 10 1607 deployments some of which have been in-place upgrades from Windows 7 and Windows 10 1511.

I noticed that my multi-language settings were not being migrated as part of this process.





So how do you resolve this issue? Well I’ve finally found a suitable and reliable way of setting these values as part of a Configuration Manager in-place upgrade Task Sequence.

Some background on why this problem has occurred.

For Windows 10, I like others have used the English (US) ISO.  I’ve then added the en-GB language pack for English (Australian) language support as part of a Configuration Manager Task Sequence. For Windows 7 we have always used the media with English (US) as the base system language.

This is important to note as you can’t in-place upgrade an existing OS using Windows 10 media from another base system language i.e. you wouldn’t be able to in-place upgrade a Windows 7 OS using a base system language of en-US with say the Windows 10 en-GB media.

The combination of this multi-language environment has resulted in the subsequent Windows 10 1607 language settings not being correctly configured for the welcome screen or for new user accounts following in-place upgrades.


1. Add a  Run Command Line step in your in-place upgrade Task Sequence that references your language package. This adds the relevant Language Pack and Feature on Demand cab files. This is the same process that you would undertake if you were preparing a reference image. As an example you could use a cmd file that contains the following (adjust for your language):



2. Create the following SetLanguage.xml file and adjust as per your requirements. This xml file is imported as part of a scheduled task that gets created later in the sequence. I would recommend using Notepad++ to error check the file and then test it by manually running the import command in step 3. This way you can be confident that it is working before moving to testing with in-place upgrades.


3. Create the following PostUpgrade.cmd file. This cmd file is run as part of a step in the task sequence.


4. Create a new package in Configuration Manger containing these 2 script files and call it something appropriate.


5. Modify your existing in-place upgrade Task Sequence to include the following 3 steps.


SMTSPostAction with a value of cmd /c shutdown /r /t 0 /f


Command line of xcopy * “c:\Windows\Temp” /D /E /C /I /Q /H /R /Y /S


Command line of: schtasks /create /tn “PostUpgradeTask” /tr “c:\Windows\Temp\PostUpgrade.cmd” /RU SYSTEM /SC onstart

These sequence steps copy the script files to c:\Windows\Temp, then create a scheduled task. Finally the SMTSPostAction restarts the PC after the sequence has finished running so that the scheduled task executes and runs PostUpgrade.cmd. This cmd is responsible for importing the adjusted language settings.

There you have it, once implemented you should have a working solution and your language settings should match what was set in the previous version of Windows 10.






Adding the English en-GB language pack to Windows 10 1607 as part of an MDT build and capture can cause the indexing service not to work depending on how its being added. See here for the specific scenario. You will note that I have commented on this forum post as I have been working over the past 2 weeks to resolve the issue.

To avoid this indexing issue the language pack needs to be added to the original 1607 media that Microsoft released last July 2016. Do not use the CBB media that was released in November 2016. The install.wim has been serviced and any language packs that are added will either fail or cause problems with the reference image when its deployed.

To summarise, the solution involves:

  1. Injecting the language pack and feature on demand components offline
  2. Adding the latest Windows 10 1607 CU to the reference image as an extra MDT TS step
  3. Using a slightly modified unattend.xml when you deploy the reference image

The Language Pack

The language pack must be added before a Cumulative Update is installed for the first time. And here is essentially where the problem lies – applying a CU during a build and capture and then applying a language pack at a later date is the root cause of the indexing issue.

During my testing I’ve found that injecting the language pack and feature on demand components offline using DISM is the easiest way to accomplish this task.

See this MSDN documentation for the relevant commands on how to mount the install.wim file, inject the cabinet files and then commit and unmount the wim.

I have added the following files in this specific order:

  • Windows-Client-Language-Pack_x64_en-gb.cab
  • Microsoft-Windows-LanguageFeatures-Basic-en-gb-Package.cab
  • Microsoft-Windows-LanguageFeatures-OCR-en-gb-Package.cab
  • Microsoft-Windows-LanguageFeatures-Handwriting-en-gb-Package.cab
  • Microsoft-Windows-LanguageFeatures-Speech-en-gb-Package.cab
  • Microsoft-Windows-LanguageFeatures-TextToSpeech-en-gb-Package.cab
  • Microsoft-Windows-LanguageFeatures-Speech-en-au-Package.cab
  • Microsoft-Windows-LanguageFeatures-TextToSpeech-en-au-Package.cab

The order in which you add these is important.

Once you have your modified install.wim file you can import this into MDT as an Operating System for your build and capture task sequence.

The Cumulative Update

So its pretty important to apply the most current CU available to Windows 10 1607, there are a ton of fixes, we know this. However there was a bug in the WU agent with the original 1607 media which prevented it from contacting a WSUS instance. As a workaround to this I’ve added a step in my MDT task sequence which uses WUSA to install the latest CU and then restart the OS. This occurs prior to the Windows Update patching step that I have in my task sequence.

I now have a Windows 10 Enterprise 1607 install.wim with the language pack and feature on demand components added. I’ve completed an MDT build and capture and I have my patched reference image which I’ve added into Configuration Manager CBB.

The Unattend.xml

The last step we need to look at is making a small adjustment to the unattend.xml file that it being used when the reference image is deployed. Because we now have English US and English GB in the wim file, we need to tell Windows 10 which language to use during the out of box experience phase (OOBE) so we don’t see a prompt asking us which language we would prefer.

Pretty simple – make the following changes to the Language value so it is changed to en-GB.


That’s it! Deploy the new reference image and after a domain user logs in verify that you have the English (Australia) language pack installed and most importantly that the indexing service has correctly indexed the control panel and other items that normally would have failed.

I’ve kept my original blog below for reference only – please note that it is now inaccurate and shouldn’t be followed.





Original Post

Something that used to be quite simple, is now not so simple. With the advent of Cortana, the English (Australia) Language pack is now no longer included in the base Windows 10 ISO. This does make some sense given the large number of languages that Windows 10 now supports with Cortana in mind.

By default if you deploy Windows 10 Enterprise using Configuration Manager with an Unattend.xml file specifying en-AU as per this example:


You end up with Australia as your region but with English (US) as your default display language.

You also do not have English (Australia) as your Speech Language with no Australian Text-to-speech voice options.

In order to fix this we need to add a Language Pack as well as some additional cabinet files from the relevant Windows 10 Features on Demand ISO available though VLSC.

To be clear – if your deploying Windows 10 1607 x64 Enterprise – you will need to download the Windows 10 1607  x64 Enterprise Language Pack ISO and the Windows 10 Features on Demand ISO as there are individual ISO’s per Windows 10 release.

You will notice that there is no en-AU language pack cab file. This is because the English (Australia) display language is a part of the en-GB cab file. There are specific en-AU Text-to-speech and Speech cab files though which should be added for Cortana functionality.

The Solution

  1. Copy the following cab file from the extracted Windows 10 Language Pack ISO to a source folder on your ConfigMgr source packages share.
    • Windows-Client-Language-Pack_x64_en-gb.cab
  2. Copy the following cab files from the extracted Windows 10 Features on Demand ISO to the same source folder
    • Microsoft-Windows-LanguageFeatures-Handwriting-en-gb-Package.cab
    • Microsoft-Windows-LanguageFeatures-OCR-en-gb-Package.cab
    • Microsoft-Windows-LanguageFeatures-Speech-en-gb-Package.cab
    • Microsoft-Windows-LanguageFeatures-TextToSpeech-en-gb-Package.cab
    • Microsoft-Windows-LanguageFeatures-Basic-en-gb-Package.cab
    • Microsoft-Windows-LanguageFeatures-TextToSpeech-en-au-Package.cab
    • Microsoft-Windows-LanguageFeatures-Speech-en-au-Package.cab
  3. Rename the files to the following, this will ensure they install in the correct order:
    • _1Microsoft-Windows-Client-Language-Pack_x64_en-gb.cab
    • _2Microsoft-Windows-LanguageFeatures-Handwriting-en-gb-Package.cab
    • _3Microsoft-Windows-LanguageFeatures-OCR-en-gb-Package.cab
    • _4Microsoft-Windows-LanguageFeatures-Speech-en-gb-Package.cab
    • _5Microsoft-Windows-LanguageFeatures-TextToSpeech-en-gb-Package.cab
    • _6Microsoft-Windows-LanguageFeatures-Basic-en-gb-Package.cab
    • _7Microsoft-Windows-LanguageFeatures-TextToSpeech-en-au-Package.cab
    • _8Microsoft-Windows-LanguageFeatures-Speech-en-au-Package.cab
  4. Create a ConfigMgr Package i.e. Windows 10 1607 en-AU Language Pack and Distribute to your DP’s
  5. In your Task Sequence add a Run Command Line step after the Setup Windows and ConfigMgr Step, this will call DISM and add the cabinet files2016-08-04_121556
  6. Once the deployment is finished, logon and open the Settings App. Open Time & Language and you should see under Region & language that English (Australia) is present with “Language Pack Installed”. If you open the Speech option, you should see English (Australia) as the spoken language.






Lately I’ve been thinking about BIOS updates. More specifically the fact that I’ve needed to apply them to some of my older HP Desktops and Laptops so we could deploy Windows 10 1511 reliably. Moving forwards this was going to be an issue as we are looking to upgrade our entire business to Windows 10 CBB later in the year. I definitely did not want to be in a position where we were manually updating BIOS versions.

Here is a solution to update your BIOS versions using a Configuration Manager task sequence. I’ve focused on HP however the solution I have implemented would work for any vendor, just adjust to suit the utility they offer.

And yes to all those SSM fans out there, I know that you can add a step to update the BIOS using that HP utility against a SSM downloaded management source with all the HP updates, however I’m not a fan and have chosen not to use it for various reasons specific to my environment.

So the requirements. Well that depends on what your already doing. If you are enabling BitLocker as part of your Task Sequence then you should already been using the HP Bios Config Utility to enable your TPM and set your BIOS settings using something like BiosConfigUtility.exe /Set:TPMEnable.REPSET /nspwdfile:”password.bin” as part of Run Command Line step with a package. You will need to use your password.bin file as part of our BIOS update command as you can’t update a BIOS automatically unless you pass the password through as part of the command. Also note that if you try to update a HP BIOS and you have bitlocker enabled there is a suspend bitlocker switch which I haven’t needed to use. But its nice to know its there. Here is a link to the HP BIOS Configuration Utility Guide which also explains how you can you generate a password.bin file if required.


I have my enable TPM / Import REPSET file steps before my Update BIOS steps in my task sequence. This is to ensure that the devices BIOS settings are always configured with a password before my BIOS update step runs. This avoids the scenario where a BIOS update is attempted using a password switch where that device doesn’t have a password set. Clear as mud?

Having said all of this, if you don’t set passwords for your BIOS or don’t enable BitLocker then ignore the last few paragraphs!

The next step you will need to do is to download all the latest BIOS versions from the HP website for your models. Create a source folder in your Configuration Manager source share and then create sub-folders for each model like this:


Extract and copy each BIOS update to the relevant folder. For older models that use HpqFlash.exe the contents should look like this:


And for newer models that use HPBIOSUPDREC.exe the contents should look like this:


Once this has been completed, create a package for each BIOS update without a program and distribute them to your DP’s.


Now add some update BIOS steps to your Task Sequence. As mentioned before I have my update steps after my BIOS REPSET import settings step (which enables the TPM etc). This occurs after the PC has rebooted following the Setup Windows and ConfigMgr step.


Create a folder for the model of PC relevant to the BIOS update, then set a WMI Query so it will only run against that model. This is what you would most likely be doing for driver packages. You don’t need to worry about using anything sneaky to query the SMSBIOSVersion against the Win32_BIOS class. If the BIOS version is up to date, the utility just exits and the task sequence continues.


Next add a Run Command Line step and reference the BIOS update package you created earlier for that model. In the Command line for older BIOS updates that use hpqFlash.exe specify the command hpqFlash.exe -s. If you have a password set on your BIOS use hpqFlash.exe -ppassword.bin -s


For newer models that use HPBIOSUPDREC.exe specify the command HPBIOSUPDREC.exe -s -r. Again if you have a password set use  HPBIOSUPDREC.exe -s -ppassword.bin -r.


The last step is to add a Restart Computer step which is an absolute must for obvious reasons.

That’s pretty much it, Happy BIOS Updating!






Here are some various tips and tricks that you may or may not want to include in your Windows 10 reference image / deployment process that I have implemented recently.


Consider not using it with Windows 10. I’ve found that it:

  • Doesn’t capture start menu layouts correctly
  • Prevents the import-startlayout command from working as the default user profile’s ntuser.dat overrides the layoutmodification.xml file that is copied to C:\Users\Default\AppData\Local\Microsoft\Windows\Shell\Layoutmodification.xml


Adding language packs

  • Download your language pack cabinet file (lp.cab) and create a new package in Configuration Manager.
  • Add an additional Run Command Line step to your Task Sequence prior to your Install Software Updates step – I’ve called my step Add Windows 10 Language Pack
  • Select your language package that you have created and enter a command line of cmd.exe /c dism.exe /online /add-package /packagepath:”%CD%”
  • Be sure to check Disable 64-bit file system redirection as we are calling dism.exe in the command line


Adding Desktop Icons for Default User

  • I’m using the age old process of loading the default user registry hive and modifying the registry to affect a change against the default user profile. This is mainly because I’m not using copyprofile with my Windows 10 reference image.
  • To add the Computer, Network and User Files icons and remove the One Drive setup from being launched when a user logs in for the first time we can create a reg file and merge that during a Task Sequence.
  • Create your reg file with the following contents, you can modify as desired (be careful with the inverted commas as my blog website tends to mess with them, so open in notepad and remove and retype).

Windows Registry Editor Version 5.00

;Add Documents, Network and add My Computer to Desktop

  • Create a new package in Configuration Manager with the registry file added as a source. No program is required.
  • Add the following steps to your Task Sequence to load the default user registry hive, run the reg file and unmount it. Reference your new package in the 3rd step.
  • Load Default User Registry Hive – cmd.exe /c reg.exe load HKEY_LOCAL_MACHINE\defuser c:\users\default\ntuser.dat2015-11-11_134409
  • Import Default User Preference


  • Commit and unload default user registry hive


Importing a Default Start Menu Layout File

  • I’ve created and imported a default start menu using the Jorgen Nilsson’s blog here


Using Group Policy to Show search icon

  • To only show the search icon in the taskbar rather than the full search box use the following group policy preference. This sets a registry item called SearchboxTaskbarMode with a Dword value of 1 for the key HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Search




So a while back I implemented a working Windows XP to Windows 7 refresh using Configuration Manger 2012 R2, some of you may be aware that this was an issue initially as there was a bug with the client being unable to stage the boot image just prior to the initial restart into WinPE. To address this a hotfix was released however the whole process had a lot of caveats to it working and was generally painful to implement.

Good news, nothing has changed with that! So last week I was thinking maybe my existing process can be used to achieve a Windows XP to Windows 10 refresh, surely that’s possible assuming that the original change Microsoft made in the client to support staging a Windows PE 3.1 boot image had been retained in the latest Configuration Manager 2012 R2 SP1 client? Well I’m happy to report that with a few changes this is indeed possible, although totally unsupported my Microsoft!

A note before proceeding. This is not supported by Microsoft and I take no responsibility for any adverse outcomes if you choose to implement this in a production environment 🙂

So with that out of the way how do we go about this?

Well the main problem with trying to do this is the issue of staging the boot image to Windows XP – so make sure that you have a Windows PE 3.1 boot image and that you have a Configuration Manager client on your Windows XP OS that is 5.00.8239.1203 or higher. If you get this wrong, you will see an error in the logs relating to an inability to stage the image as per the below screen grab. The other main issue your likely to run into is a lack of drivers in your Windows PE 3.1 boot image, so spend some time making sure you have all of your hardware models NIC and storage drivers added to the boot image that are required.


A few assumptions are going to be made by me here.

  • You have a working Configuration Manager 2012 R2 SP1 site with Cumulative Update 1 installed + hotfix KB3084586
  • You have installed the Windows ADK 10 and have a working USMT 10 package
  • You have installed MDT 2013 Update 1 and have integrated it with your Configuration Manager instance
  • You have a working USMT 4 package (You can download the Windows AIK to grab the USMT files, usually in c:\Program Files\Windows AIK\Tools\USMT)
  • Your Windows XP machine has a working, active Configuration Manager agent installed at version 5.00.8239.1203 or higher
  • You have a working custom Windows PE 3.1 x86 boot image with your hardware model network and storage drivers injected into it – follow this guide for building your own boot image. You can use DISM to inject drivers in a mounted wim file with this documentation. Remember that you will need to inject the correct driver versions relevant to the PE 3.1 boot image, in most cases this will be the Windows XP equivalent for each of your hardware model types.
  • You have added this Windows PE 3.1 x86 boot image to your Configuration Manager environment and have replicated it to your Distribution Points


  • You have a Windows 10 reference image

The process

  • Create your USMT 4 package and distribute the package to your Distribution Points. As mentioned previously the source files can be obtained from the Windows AIK.


  • Create a new MDT Client Replace Task Sequence specifying your Win PE 3.1 boot image, MDT Files package, Windows 10 OS reference image, Client package, USMT 10 package and your Settings Package. Make sure that you add any driver packages, applications and other settings for your Windows 10 OS such as Start Menu Layout file import steps, etc. Also don’t forget to set a local administrator password, time zone and any other Task Sequence specific settings that need to be addressed.



  • Edit the newly created Task Sequence so that the Capture User State step runs your USMT 4 package. Even though Microsoft have documented that USMT 10 supports capturing files and settings from Windows XP, it fails with an execution error about scanstate.exe not being a valid Win32 Application. Note that you could use USMT 5.0 however I already had a working USMT 4.0 Files package so for this blog I have chosen to leave the version at this level. You can leave the Restore User State step as USMT 10 as it will restore the data from the Capture User State step.


  • Create a new collection for deployment and review your Task Sequence.
  • Check that your Windows XP client is running the correct Configuration Manager client version of 5.00.8239.1203 or higher and add your Windows XP client to the collection.







  • Review your results. Its worth mentioning that the User State Migration Process doesn’t restore the wallpaper settings between Windows XP and Windows 10 and I don’t believe this is possible. However I’m happy to be corrected on this one if anyone does manage to achieve this. It does however migrate the source jpg and I’ve just reset this as the background image.