Получите Windows DisplayLanguage с Powershell на удаленном рабочем столе - PullRequest
1 голос
/ 08 мая 2020

Я пытаюсь получить Windows настройку языка дисплея через PowerShell на удаленном компьютере . Я пробовал Get-WinUserLanguageList, но он возвращает список всех языков. Get-WinSystemLocale и Get-Culture также не те, которые я ищу, потому что Culture возвращает что-то для настроек синтаксиса и прочего, а локальная система зависит от моего сервера. Все три значения для удаленного рабочего стола разные. Есть ли способ получить текущий язык отображения удаленного рабочего стола?

Я ищу этот параметр удаленного компьютера:

enter image description here

Ответы [ 2 ]

2 голосов
/ 08 мая 2020

Полезный ответ A sh - лучшее решение для машин, работающих под управлением Windows 8 или выше / Windows Server 2012 R2 или выше .


Если вам по-прежнему требуется удаленный запуск на машине Windows 7 / Windows Server 2012 :

(Get-ItemProperty 'HKCU:\Control Panel\Desktop' PreferredUILanguages).PreferredUILanguages[0]

Справочная информация :

При выполнении local самым простым решением является использование $PSUICulture (возвращает строку с именем языка, например en-US) или Get-UICulture (возвращает [cultureinfo] объект), как показано в этот ответ .

Однако этот не работает, когда вы используете PowerShell удаленное взаимодействие (которое почему необходимо вышеуказанное решение / решение A sh):

# Does NOT return the target user's display language.
# Seemingly always returns the OS installation language.
Invoke-Command -ComputerName $someComputer { $PSUICulture }

Мне неясны точные причины, но это может быть связано с тем, что удаленно выполняемый код PowerShell выполняется в невидимая оконная станция, отличная от интерактивного рабочего стола.

2 голосов
/ 08 мая 2020

Язык, который вы видите, является первым в списке из Get-WinUserLanguageList.

PS C:\> (Get-WinUserLanguageList).LocalizedName
Russian
English (United States)

language_settings

Когда я меняю порядок в списке и сначала устанавливаю Engli sh, порядок в PowerShell меняется на противоположный.

PS C:\> Set-WinUserLanguageList -LanguageList en-US,ru

Confirm
Continue with this operation?
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"): Y
PS C:\> (Get-WinUserLanguageList).LocalizedName
English (United States)
Russian

updatedlanguage

Итак, чтобы получить текущий язык, вам просто нужно вызвать первый объект в этом списке.

(Get-WinUserLanguageList)[0].LocalizedName
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...