Change Windows 10 UI Display Language with #PowerShell

This is a Quick Post if you are looking for a very simple Windows 10 UI Display Language Changer #PowerShell Script. Handy for people supporting Windows 10 environment remotely with customers across countries with varying Regional and Language preferences.

Here are quick pointers

First we query the current LanguageTag property of the Get-WinUserLanguageList cmdlet.

(Get-WinUserLanguageList).LanguageTag

Next up, we query the WMI for all the Windows MUI languages available on the Computer.

(Get-WmiObject -Class Win32_OperatingSystem).MUILanguages

Finally, we set the Windows User Language List based on the Selection from Out-GridView with the below snippet.

Note: The Windows UI Language Change is only per user and not for Default Users.

Lang-Select

Set-WinUserLanguageList -LanguageList (New-WinUserLanguageList -Language $LangSelect -ErrorAction SilentlyContinue)

Here is the Full Script

# Powershell.exe -ExecutionPolicy ByPass -NoLogo -NoProfile -NonIntertive -Window Hidden "& '.\Change-Language.ps1'"

$LangTag = (Get-WinUserLanguageList).LanguageTag
$LangSelect = (gwmi -Class Win32_OperatingSystem).MUILanguages | Out-GridView -Title "Language-Changer ++ Select the Windows Language you wish to Apply ++" -OutputMode Single

If ($LangSelect -eq $null)
{
Add-Type -AssemblyName Microsoft.VisualBasic
$msgBoxInput = [Microsoft.VisualBasic.Interaction]::MsgBox('You have not selected a Language. The Process will Exit now. No Changes will be made!','OKOnly,SystemModal,Information', 'Language Change')
switch ($msgBoxInput) {
'OK' {
Exit
}
}
}
If (($LangSelect -ne $null) -and ($LangSelect -eq $LangTag))
{
Add-Type -AssemblyName Microsoft.VisualBasic
$msgBoxInput = [Microsoft.VisualBasic.Interaction]::MsgBox("You are already running Windows UI in the $LangSelect Language. No Changes will be made. Process will Exit now!",'OKOnly,SystemModal,Information', 'Language Change')
switch ($msgBoxInput) {
'OK' {
Exit
}
}
}

If (($LangSelect -ne $null) -and ($LangSelect -ne $LangTag))
{
Set-WinUserLanguageList -LanguageList (New-WinUserLanguageList -Language $LangSelect -ErrorAction SilentlyContinue) -Force -ErrorAction SilentlyContinue
Add-Type -AssemblyName Microsoft.VisualBasic
$msgBoxInput = [Microsoft.VisualBasic.Interaction]::MsgBox("You have selected $LangSelect as your Windows UI Language. Would you like to LogOff for the language change to take effect?",'YesNo,SystemModal,Information', 'Language Change')
switch ($msgBoxInput) {
'Yes' {
LogOff
}
'No' {
Exit
}
}
}

In case you wish to wrap the script as an exe, please refer to the link HERE

Thanks for reading and  Hope this helps.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: