Multilanguage Konfiguration auf Windows Terminal Servern

Wie man lediglich die Preloaded Keyboard Layouts konfigurieren kann, habe ich ja bereits in diesem Beitrag erläutert. Im folgenden Beitrag geht es über das reine Keyboard Layout hinaus und ich möchte in Multilanguage Umgebungen auch UIs und sonstige Lokalisierungseinstellungen konfigurieren.

Mit Windows Server 2016 hat Microsoft den Support für das intl.cpl Control Panel Applet eingestellt, mit dem in der Vergangenheit i.d.R. die Regional Settings auf Multilanguage Terminal Server Umgebungen konfiguriert wurde. Zwar funktioniert das Control Panel Applet noch, dennoch sollten die MUI PowerShell Cmdlets verwendet werden.

Die Anpassung der Spracheinstellungen erfolgt dabei in folgenden Schritten:

  • UI Sprache / Keyboard Layout
    • Die aktuelle Language List des Users wird abgefragt und in eine Variable $Language umgeleitet.
    • Die enthaltenen Language IDs werden aus der Variable entfernt.
    • Der Variable wird eine neue Language ID hinzugefügt.
    • Alle Werte des Parameters InputMethodTips (Keyboard Layouts) werden aus der Language List in der Variable gelöscht.
    • Der Parameter InputMethodTips wird mit dem gewünschten Wert wieder befüllt.
    • Die aktuelle Language List wird mit den Werten aus der Variable für den User ersetzt.
    • Das Standard Keyboard Layout System Override wird für den User gesetzt.
    • Bestehende Keyboard Layouts, die geladen und bei der Anmeldung verfügbar sind, werden für den User gelöscht.
    • Das Keyboard Layout, welches geladen und bei der Anmeldung verfügbar ist, wird für den User gesetzt.
  • Culture Settings (Datums-/Zeit-/Währungsformat) / Home Location
    • Die automatische Anpassung der Culture Settings an die Home Location wird aufgehoben.
    • Die Culture Settings des werden konfiguriert.
    • Die Home Location des Users werden konfiguriert.

Beispiel 1:
Wir haben auf einem Server mit System Language en-US zusätzlich das Sprachpaket de-DE installiert. Die Mitarbeiter in Deutschland sollen entsprechend ein Deutsches UI angezeigt bekommen und ein lokales Keyboard Layout. Auch die restlichen Einstellungen wie Regional Settings (Culture) und Home Location sollen auf Deutschland angepasst sein.

$Language = Get-WinUserLanguageList
$Language.Clear()
$Language.add("de-DE")
$Language[0].InputMethodTips.Clear()
$Language[0].InputMethodTips.Add('0407:00000407')
Set-WinUserLanguageList $Language -Force
Set-WinDefaultInputMethodOverride -InputTip "0407:00000407"
Remove-Item -Path 'HKCU:\Keyboard Layout\Preload' -Recurse
New-ItemProperty -Path 'HKCU:\Keyboard Layout\Preload' -Name 1 -Value 00000407 -PropertyType String
Set-WinCultureFromLanguageListOptOut -OptOut $True
Set-Culture -CultureInfo de-DE
Set-WinHomeLocation -GeoId 0x5E

Beispiel 2:
Wir haben einen Server mit System Language en-US kein weiteres Sprachpaket installiert. Der Server soll von Mitarbeitern in Spanien mit Englischer UI, aber mit lokalem Keyboard Layout (Spanisch, Traditionell) verwendet werden. Auch die Regional Settings (Culture) soll auf Spanisch umgestellt, sowie die Home Location auf Spanien geändert werden. Als zweites Keyboard Layout soll zusätzlich noch Englisch verfügbar sein.

$Language = Get-WinUserLanguageList
$Language.Clear()
$Language.add("en-US")
$Language[0].InputMethodTips.Clear()
$Language[0].InputMethodTips.Add('0409:0000040A')
$Language[0].InputMethodTips.Add('0409:00000409')
Set-WinUserLanguageList $Language -Force
Set-WinDefaultInputMethodOverride -InputTip "0409:0000040A"
Remove-Item -Path 'HKCU:\Keyboard Layout\Preload' -Recurse
New-ItemProperty -Path 'HKCU:\Keyboard Layout\Preload' -Name 1 -Value 0000040A -PropertyType String
New-ItemProperty -Path 'HKCU:\Keyboard Layout\Preload' -Name 2 -Value 00000409 -PropertyType String
Set-WinCultureFromLanguageListOptOut -OptOut $True
Set-Culture -CultureInfo es-ES
Set-WinHomeLocation -GeoId 0xD9

Hier bekommt man die Language Codes her:
https://www.itprotoday.com/windows-78/how-do-i-configure-default-keyboard-layout-during-login

Hier bekommt man die Home Location IDs her:
https://docs.microsoft.com/en-us/windows/win32/intl/table-of-geographical-locations

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.