First Published to TechNet on May 24. 2017
Consider following scenario:
Your corporate Standard Desktop Client has Multiple Language Packs installed and you have planned to go with Windows 10.
If you want to skip the introduction you can jump to the automated solution section.
You have now the following challenges:
In this Sample we have a Windows 7 Installation with English and German Language Packs installed.
The default OS Language is set to German (de-DE)
This can be solved using following method:
Boot from your Windows 10 Setup Media
At the first screen press and hold SHIFT + F10 key to open an command prompt
run dism.exe /image:d:\ /set-uilang:en-us against your Windows Installation (d:\ would be the drive where your Windows 7 Installation is found in Windows PE, this can be another drive letter as well depending on your Disk Partitioning)
After a reboot of the device we can verify our change.
Default System UI Language is now English (en-US)Running Windows Setup again on the same device allows us finally to keep personal files and settings.
This is essential for a succesful upgrade with System Center Configuration Manager.
A lot of manual tasks which are not enterprise friendly. That is why I decided to provide some sample scripts and a Task Sequence Template to help our Enterprise customers archiving this goal.
There are two PowerShell Scripts needed plus some Condition based Task Sequence Steps to get this done.
The first script in use is OSDDetectInstalledLP.ps1 will enumerate all Languages installed and which UI Language the OS has currently.
Following variables will be Set via this Script:
The second script in use OSDRegionalSettings.ps1 will configure the Regional Settings.
Following variable can be set for this Script:
Note each script will write a Log file which will be located in C:\Windows\CCM\Logs directory matching the Scripts name.
Download Task Sequence export: OSD_MUI_UpgradeWindows10MUI.zip
Download OS Deployment Scripts: OSD_MUI_OSDScriptsMUI.zip (updated 2017-08-10)
The Task Sequence is based on the default Template “Upgrade an Operating System from an Upgrade Package” and has been created in a System Center Configuration Manager Current Branch 1702 environment.
Following Steps with conditions have been added:
Run PowerShell Script: Detect MUI Settings
Command OSDDetectInstalledLP.ps1 with Execution policy Bypass
Condition: There is no condition set
Group: Change System UILanguage
Condition: Task Sequence Variable CurrentOSLanguage not equals en-US
Run Command Line: Supress User Logon after Reboot
Command line: powershell.exe -command "Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\smstsmgr -Name Start -Value 4 -Type DWord -Force; Set-ItemProperty -Path HKLM:\SYSTEM\Setup -Name SetupType -Value 2 -Type DWord -Force; Set-ItemProperty -Path HKLM:\SYSTEM\Setup -Name CmdLine -Value 'system32\osdsetuphook.exe /execute' -Type String -Force"
Condition: There is no condition set
Note: This is step 1 of 3 steps which will suppress the Logon Screen to the end user as long as this Task Sequence is running. In case you detect issues, disable this step before you raise a support case.
Restart Computer: Restart Computer into Windows PE
Condition: There is no condition set
Group: Apply en-US Language Pack
Condition: Task Sequence Variable MUIdetected not exists
Note: The purpose of this group is to support native localized Windows installations which have no en-US language pack installed.
Run Command Line: Appy Language Pack W7.0 x64 (en-us)
Command line: dism.exe /image:%_OSDDetectedWinDrive% /ScratchDir:%_OSDDetectedWinDir%\Temp /Add-Package /PackagePath:.\
Condition: If all conditions are met
OSArchitecture equals 64-bit
OSVersion equals 6.1.7601
Note: This step requires that your Language Pack (*.cab) files are located in the root of the Package source folder.
Steps for Windows 8.1 and Windows 10 are similar, except the OSVersion 6.3.9600 for Windows 8.1 and 10.0.10586 for Windows 10 build 1511
Set Task Sequence Variable: Set Task Sequence Variable MUIdetected
Condition: There is no condition set
Note: This is required for a step Download additional Language Packs, otherwise your device will be en-US at the end.
Run Command Line: Set UILang en-US on %_OSDDetectedWinDrive%
Note: This will change the Windows UILanguage of the current installed OS, as described in the beginning of this article.
Run Command Line: Copy OSDSetupHook to %_OSDDetectedWinDir%
Command Line: cmd.exe /c copy %SystemDrive%\SMS\Bin\x64\osdsetuphook.exe %_OSDDetectedWinDir%\system32
Note: This is step 2 of 3 steps which will suppress the Logon Screen to the end user as long as this Task Sequence is running. In case you detect issues, disable this step before you raise a support case.
Restart Computer: Restart Computer back to Full OS
Condition: There is no condition set
Run Command Line: Re-Enable Task Sequence Service after Reboot
Command Line: powershell.exe -command "Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\smstsmgr -Name Start -Value 3 -Type DWord -Force"
Note: This is step 3 of 3 steps which will suppress the Logon Screen to the end user as long as this Task Sequence is running. In case you detect issues, disable this step before you raise a support case.
Group: Download additional Language Packs
Condition: Task Sequence Variable MUIdetected exists
Download Package Content: Download Language Pack de-DE to c:\LanguagePacks
Condition: Task Sequence Variable de-DE exists
Set Task Sequence Variable: Include Language Packs for Upgrade
Set Task Sequence Variable: OSDSetupAdditionalUpgradeOptions
Value: /InstallLangPacks c:\LanguagePacks
Condition: If folder C:\LanguagePacks exists
Upgrade Operating System: Upgrade Operating System Enterprise
Condition: Task Sequence Variable OSSKU not equals PROFESSIONAL
Note: This Task Sequence sample allows to distinguish between Professional and Enterprise Edition upgrades. It is very important for an upgrade from Professinal to Professional to provide a KMS or MAK Product Key. A lot of devices have OEM KEYS preinstalled within their Bios, which is detected from Windows Setup during the Upgrade and would cause the process to stop right after Upgrade Operating System step. A OEM KEY prevents Windows to execute the SetupComplete.cmd script which is essential in this process to re-enable the Configuration Manager client agent.
Run PowerShell Script: Set UILangage back for Logon Screen Language
Command OSDRegionalSettings.ps1 with Execution policy Bypass
Condition: Task Sequence Variable CurrentOSLanguage not equals en-US
Run Command Line: Remove c:\LanguagePacks
Command line: cmd.exe /c rd c:\LanguagePacks /s /q
Condition: If folder C:\LanguagePacks exists
Wilhelm J. Kocher
Senior PFE - EMEA
This post is provided "AS IS" with no warranties, and confers no rights. The solution is not officially supported. Any support provided by Microsoft regarding this solution may be limited. Microsoft does not guarantee the solution will work in all environments and/or scenarios.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.