Setting Keyboard Type and Localization Pre-OOBE

MR RIZK

New Member
When using the international variant of the Windows ISO and configuring the unattended settings to match Australia and the US keyboard layout (Windows localization, WindowsPE), the deployment proceeds smoothly for both user-initiated and pre-provisioned scenarios, seamlessly enrolling into Intune without any hitches.

However, the issue emerges when a wipe is triggered from Intune, prompting the device to rebuild itself. Post rebuild and during OOBE, when the user is prompted to sign in, the keyboard defaults to UK layout instead of the expected US layout. Consequently, certain keys are misplaced, causing issues entering their credentials.

This issue stems from the fact that the unattended setup runs only once, and the operating system defaults to the UK keyboard layout due to using en-GB for the UI Language to get the en-au Australian localization since there is no fully localized Australian language.

Seeking a creative method to leverage NTLite to enforce the keyboard setting prior to OOBE following an Intune-initiated wipe.
 
Most NTLite users don't manage Autopilot or InTune environments, so your responses will be limited.

Wipe/Factory Reset/Push Button Reset will take OOBE options from \Windows\Panther\unattend.xml.

Create a minimum unattend.xml, but wait until Post-Setup to copy this file to \Windows\Panther. This prevents the file from being called in the normal install, but prepares the file for future use.
Code:
<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
    <settings pass="oobeSystem">
        <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <InputLocale>0409:00000409</InputLocale>
            <SystemLocale>en-US</SystemLocale>
            <UILanguage>en-US</UILanguage>
            <UILanguageFallback>en-US</UILanguageFallback>
            <UserLocale>en-US</UserLocale>
        </component>
        <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <TimeZone>Pacific Standard Time</TimeZone>
        </component>
    </settings>
</unattend>
 
I created a post setup task as the below and when the machine is built with an NTLite iso the file is placed in the \Windows\Panther directory. The intune enrollment works as expected. However when a wipe is initiated from intune it appears that the panther directory is being deleted. I say this because the file is no longer there and the OOBE experience is not pulling the settings.

I checked https://learn.microsoft.com/en-us/windows-hardware/customize/desktop/automate-oobe and it appears that the xml inclusions are valid.

Any other creative ideas to be able to place the file into the Panther directory post wipe?

PS: Not sure if this would work but I dropped the unattend.xml into the Panther directory manually and rebooted the device but still no joy, however not sure if this test is a valid one.

ntlcopy.png

Code:
<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
    <settings pass="oobeSystem">
        <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <InputLocale>0c09:00000409</InputLocale>
            <SystemLocale>en-AU</SystemLocale>
            <UILanguage>en-GB</UILanguage>
            <UILanguageFallback>en-GB</UILanguageFallback>
            <UserLocale>en-AU</UserLocale>
        </component>
        <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <TimeZone>AUS Eastern Standard Time</TimeZone>
            <OOBE>
                <HideEULAPage>true</HideEULAPage>
                <HideLocalAccountScreen>true</HideLocalAccountScreen>
                <ProtectYourPC>3</ProtectYourPC>
            </OOBE>
        </component>
    </settings>
</unattend>
 
copy is a built-in command to CMD. The proper syntax is:

cmd/c copy %WINDIR%\Setup\Files\unattend_en-au.txt %WINDIR%\Panther\unattend.xml /Y

If that doesn't work, try C:\Recovery\AutoApply\unattend.xml
Recovery components
 
Testing looks promising. Deployed machine with NTLite custom iso, Enrolled into Intune, Wiped machine.

Localization settings appear to be pulling correctly from xml file. Had to use the AutoApply folder as per the below combined with xcopy as AutoApply folder does not exist.

Thanks for the tips!.. Hope it helps someone else in AU

ntlcopy.png
 
That's great work!

For non-English users: When using xcopy, "echo f" needs to be replaced with the first letter of your language's word for "File".

For example, German uses the word Datei (d).
echo d | xcopy /f /y
 
Back
Top