在 PowerShell 中更改多种语言的键盘布局

fac*_*ess 3 powershell automation windows-10

这个问题是这个问题的扩展版本

在 windows-10 中,我需要以编程方式添加 3 种语言:en-US、SV、RU。

它与以下命令配合使用效果很好:

Set-WinUserLanguageList en-US, sv, ru -Force
Run Code Online (Sandbox Code Playgroud)

问题是,这种方式系统为每种语言添加默认键盘布局,而我需要不同的俄语布局 - 0419:A0000419(预安装)

试图用这个来解决这个难题:

  $rusLang = New-WinUserLanguageList ru
  $rusLang[0].InputMethodTips.Clear()
  $rusLang[0].InputMethodTips.Add('0419:A0000419') # required layout
  Set-WinUserLanguageList en-US, sv, $rusLang
Run Code Online (Sandbox Code Playgroud)

它没有达到目的。因 InvalidArgument 失败:(:) [Set-WinUserLanguageList]、ParameterBindingException

我不关心 RU 语言是否会添加所需的InputMethodTips,或者此参数在Set-WinUserLanguageList en-US, sv, ru -Force

如何才能实现呢?

Vad*_*Vad 5

尝试使用这里的代码

Dism /Image:"C:\mount\windows" /Set-InputLocale:042d:0000040a
Dism /Image:"C:\mount\windows" /Set-InputLocale:0411:{03B5835F-F03C-411B-9CE2-AA23E1171E36}{A76C93D9-5523-4E90-AAFA-4DB112F9AC76}
Dism /Image:"C:\mount\windows" /Set-InputLocale:id-ID
Dism /Image:"C:\mount\windows" /Set-AllIntl:fr-FR
Run Code Online (Sandbox Code Playgroud)

或者你可以这样使用:

  $Lang = New-WinUserLanguageList en-US #you cant add all language at time(of course you can piping it)
  $Lang.Add("sv") #you must add it simple
  $Lang.Add("ru")
  $Lang[2].InputMethodTips.Clear()
  $Lang[2].InputMethodTips.Add('0419:A0000419') # required layout
  Set-WinUserLanguageList -LanguageList $Lang #input must be in format System.Collections.Generic.List<Microsoft.InternationalSettings.Commands.WinUserLanguage>
Run Code Online (Sandbox Code Playgroud)