Archive for the ‘Uncategorized’ Category

Introduction

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:

https://sccmentor.com/2017/05/20/windows-10-1703-language-pack-fun-and-games/

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

[Settings]
Priority=Default

[Default]
_SMSTSORGNAME=%ORGNAME%
UserDataLocation=NONE
DoCapture=YES
OSInstall=Y
JoinWorkgroup=WORKGROUP
HideShell=NO
FinishAction=SHUTDOWN
DoNotCreateExtraPartitions=YES
ApplyGPOPack=NO
WSUSServer=http://%SERVERNAME%:8530

SkipAppsOnUpgrade=YES
SkipAdminPassword=YES
SkipProductKey=YES
SkipComputerName=YES
SkipDomainMembership=YES
SkipUserData=YES
SkipLocaleSelection=YES
SkipTaskSequence=NO
SkipComputerBackup=YES
SkipBitLocker=YES
SkipSummary=YES
SkipRoles=YES
SkipCapture=NO
SkipFinalSummary=YES
SkipTimeZone=YES
SkipApplication=YES

EventService=http://%SERVERNAME%:9800

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
<InputLocale>0c09:00000409</InputLocale>
<SystemLocale>en-AU</SystemLocale>
<UILanguage>en-US</UILanguage>
<UILanguageFallback>en-US</UILanguageFallback>
<UserLocale>en-AU</UserLocale>

oobeSystem pass

<InputLocale>0c09:00000409</InputLocale>
<SystemLocale>en-AU</SystemLocale>
<UILanguage>en-US</UILanguage>
<UILanguageFallback>en-US</UILanguageFallback>
<UserLocale>en-AU</UserLocale>

<OOBE>
<ProtectYourPC>3</ProtectYourPC>
<NetworkLocation>Work</NetworkLocation>
<HideEULAPage>true</HideEULAPage>
<HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
<HideOnlineAccountScreens>true</HideOnlineAccountScreens>
</OOBE>

For Dutch.

specialize pass

<InputLocale>0413:00020409</InputLocale>
<SystemLocale>nl-NL</SystemLocale>
<UILanguage>en-US</UILanguage>
<UILanguageFallback>en-US</UILanguageFallback>
<UserLocale>nl-NL</UserLocale>

oobeSystem pass

<InputLocale>0413:00020409</InputLocale>
<SystemLocale>nl-NL</SystemLocale>
<UILanguage>en-US</UILanguage>
<UILanguageFallback>en-US</UILanguageFallback>
<UserLocale>nl-NL</UserLocale>

<OOBE>
<ProtectYourPC>3</ProtectYourPC>
<NetworkLocation>Work</NetworkLocation>
<HideEULAPage>true</HideEULAPage>
<HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
<HideOnlineAccountScreens>true</HideOnlineAccountScreens>
</OOBE>

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.

Results

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 🙂

Cheers

Damon

 

Advertisements

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.

CopyProfile

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

2015-11-11_133157

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
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel]
“{F02C1A0D-BE21-4350-88B0-7367FC96EF3C}”=dword:00000000
“{20D04FE0-3AEA-1069-A2D8-08002B30309D}”=dword:00000000
“{59031a47-3f72-44a7-89c5-5595fe6b30ee}”=dword:00000000

  • 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

2015-11-11_134421

  • Commit and unload default user registry hive

2015-11-11_134430

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

2015-11-11_140455

2015-11-11_140738

 

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.

2015-10-05_111554

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

2015-10-05_114630

  • 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.

2015-10-05_102155

  • 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.

2015-10-05_104246

2015-10-05_104855

  • 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.

2015-10-05_102026

  • 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.

2015-09-28_134201

2015-10-02_145049

2015-10-02_152141

2015-10-02_154909

2015-10-05_081808

2015-10-05_110650

  • 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.

Cheers

Damon

 

 

UPDATE 2:

If you’re having difficulty setting default file associations using the dism import method then you can try the following alternative.

  1. Perform a basic Windows 10 deployment and set your file associations manually as per your preference
  2. Create an xml file of these file associations by running Dism /Online /Export-DefaultAppAssociations:<path to xml file>\AppAssociations.xml
  3. Rename this file to OEMDefaultAssociations.xml
  4. Create a Configuration Manager Package with this file and distribute to your DP’s
  5. Add a Run Command Line step in your Windows 10 Task Sequence which copies the file to c:\Windows\System322017-01-30_145524
  6. Windows 10 will use this xml file when setting default file type associations

UPDATE:

I’ve updated the script I use to Powershell. Process is the same though.

Be aware that a lot of people have reported difficulty in setting file association defaults with them reverting back to their defaults at first login. This seems to be related to an update that was included in the April/May Windows 10 Cumulative Update. There is no fix presently that I’m aware of however some have had the issue and some do not which makes me think its related to the application itself and how its modifying the Windows 10 default file type settings. Hopefully this will either be addressed by developers releasing updated versions of their applications that conform with Microsoft’s expectations or Microsoft releasing an update to address the issue.

  1. Create a ps1 script with the following contents: dism.exe /online /Import-DefaultAppAssociations:$PSScriptRoot\AppAssociations.xml
  2. Copy that script to a package folder with your application associations xml file
  3. Add a Task Sequence step to execute the script

3QNpv-Lo

With Windows 10 now approaching its 2 month anniversary since RTM, I have finally finished the reference image our agency is going to use. Its taken quite a few attempts to get things right so hopefully some of my approaches to implementing solutions to some common issues will save you some time and effort.

Firstly lets establish how I’m creating my reference image. I’m using two Hyper V Virtual Machines running on a solid state drive.

1 x Server 2012 R2 with MDT 2013 Update 1 Build 8298

1 x Server 2012 R2 running a WSUS instance

Then running a pretty standard Build and Capture task sequence with LTISuspend.wsf to allow for some minor changes. With that out of the way – lets talk about how I’m setting my default file associations.

By default Windows 10 has a number of default associations which you may not wish to keep. For example, by default the PDF extension is associated with Microsoft Edge so if your deploying a 3rd party PDF reader, you’re most likely going to want to deal with this. Some other file types you may want to change may include what application is associated with photos and videos as by default these are associated with the built in modern applications. You may also want to change the default browser from Edge to Internet Explorer 11.

You can control file type associations with group policy and there are quite a few blogs already about this. I’ve chosen not to use this approach as it enforces a baseline set of associations and I want my environment to be flexible to allow for variation if needed.

  1. On a reference computer running Windows 10, install all of your standard operating environment applications then set your default programs as per your preference.
  2. Once finished run an elevated powershell instance and  type Dism /Online /Export-DefaultAppAssociations:<path to xml file>\AppAssociations.xml2015-09-24_133139
  3. Next create a new Configuration Manager package that includes this xml file and distribute it to your DP’s. You can edit the file if you need to make further changes. Note that you don’t need to create a program.2015-09-24_133611
  4. Now we need to create two new Run Command Line steps in our Windows 10 Configuration Manager Task Sequence. One to copy the xml file locally to the target workstation and a second to execute the DISM import command. I’ve added these steps to my OSD Results and Branding group section of my Task Sequence. Make sure you disable 64-bit file system redirection otherwise your DISM import command will error out.2015-09-24_135038 2015-09-24_135343
  5. That’s it! You will now have a reference image that has a default set of file type application associations.