Po končani seji sence jezikovna vrstica v seji RDP izgine

Na strežnikih RDS pod Windows Server 2012 R2 / Windows Server 2016 obstaja precej stara napaka. Ko se skrbnik ali uslužbenci tehnične podpore prekinejo s sejo RDP uporabnika v nadzornem načinu prek senčne povezave, jezikovna plošča v uporabniški seji izgine. Kot rezultat, uporabnik v svoji seji RDS ne more preklopiti jezika, vroče tipke za preklapljanje jezika tudi ne delujejo. Če se skrbnik ponovno poveže z uporabniško sejo, se jezikovna vrstica znova prikaže, ko prekinite povezavo, spet izgine. Podobna napaka se pojavi, ko se Shadow poveže z delovnimi postajami z Windows 10 in Windows 8.1..

Kot se je izkazalo, se ta težava pojavi le, če skrbnik vzpostavi senčno povezavo z jezikovno postavitvijo, ki se ne ujema s sistemskim jezikom (jezik prikaza) v uporabnikovem računalniku. I.e. če ima uporabnik nameščen ruski sistemski vmesnik in je nanj povezan skrbnik z rusko postavitvijo, ni težav. Če je povezan skrbnik z angleško postavitvijo, jezikovna plošča izgine, ko seja prekine.

Pravzaprav se jezikovna vrstica samo skriva, ker neaktivni jezik se izbriše iz uporabnika in sistem meni, da če ima uporabnik samo en jezik, potem ni treba prikazati plošče za preklapljanje jezika.

Če želite vrniti jezikovno vrstico, morate na stranko iti Nadzorna plošča \ Ura, jezik in regija \ jezik, izberite kateri koli jezik in gumbe Zgoraj/Dol premakni.

Če želite avtomatizirati to dejanje, lahko na namizje uporabnika dodate naslednji skript PowerShell:

addlanguage.ps1

$ 1 = New-WinUserLanguageList v ZDA
$ 1.Dodaj ("ru-RU")
Set-WinUserLanguageList $ 1 -silo

Na splošno dobimo ročno ščetinico in to celo z ročnim pogonom.

Namig. Naletel sem na zanimivo nastavitev registra IgnoreRemoteKeyboardLayout. Če na strežniku RDS v podružnici HKLM \ Sistem \ CurrentControlSet \ Control \ Tipkovnica ustvarite nov parameter tipa DWORD z vrednostjo 1 (potreben ponovni zagon), potem strežnik začne prezreti postavitev odjemalčeve tipkovnice.

Različica urejevalnika registra Windows 5.00
[HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Tipkovnica]
"IgnoreRemoteKeyboardLayout" = dword: 00000001

Vendar težava z izginjajočo jezikovno vrstico še vedno nastane, če se razporeditve tipkovnice razlikujejo med sejo skrbnika in uporabnikovega terminala..

Poskusimo avtomatizirati malo drobtino. Ko prekinite povezavo s sejo v senci, se uporabnik prijavi v Microsoft -> Windows -> TerminalServices -> RemoteConnectionManager -> Dogodek operacijskega dnevnika s "Sejo nadzora sence končano" z EventId 20507.

Nalogo načrtovalca moramo vezati na ta dogodek (element Priložite nalogo temu dogodku), ki bi pognal skript fixlangauge.ps1, ki oblikuje novo opravilo za načrtovalca in ga izvrši v uporabniški seji.

fixlangauge.ps1

$ User = Get-WinEvent -LogName "Microsoft-Windows-TerminalServices-RemoteConnectionManager / Operational" | Where-Object $ _. ID -eq "20507" | select-object -prvi 1 | ForEach-Object "$ ($ _. Properties [2] .Value)"
schtasks.exe / create / RU $ Uporabnik / IT / TN $ Uporabnik / TR "powershell.exe -File c: \ ps \ addlanguage.ps1" / SC DAILY
schtasks.exe / run / TN $ Uporabnik
Start-Sleep-Milisekunde 10000
schtasks.exe / Delete / TN $ Uporabnik / F

Naloga izvaja zgornji skript PS addlanguage.ps1.

Tako po tem, ko skrbnik prekine sejo sence v senci z uporabnikom, se v sistemu sproži sprožilec dogodka 20507 in ukaz jezika doda samodejno zažene izpod uporabnika.