与 set-winuserlanguagelist 命令相关的问题/问题 [英] Questions/Problems related to set-winuserlanguagelist command
问题描述
我正在构建一个代码来修复 Windows 10 上的键盘布局情况.通过自动化解决方案,我决定使用 powershell.但问题是我对它很陌生并且面临某些问题.我设法挖掘了一个脚本来更改键盘布局,但是它只更改为一种语言.当我尝试用 2 种语言创建数组时:
$langlist=$lang_en,$lang_ru设置-winuserlanguagelist $langlist
它只是返回给我下一个错误:
Set-WinUserLanguageList:无法将Microsoft.InternationalSettings.Commands.WinUserLanguage"转换为类型参数LanguageList"需要Microsoft.InternationalSettings.Commands.WinUserLanguage".指定的方法是不支持.在行:1 字符:25+ set-winuserlanguagelist $langlist+ ~~~~~~~~~+ CategoryInfo : InvalidArgument: (:) [Set-WinUserLanguageList], ParameterBindingException+FullyQualifiedErrorId:CannotConvertArgument,Microsoft.InternationalSettings.Commands.SetWinUserLanguageListCommand
当我尝试使用下一个命令时:$test = Get-WinUserLanguageList
,该命令与 set-winuserlanguagelist
配合良好.
完整脚本:
$keys='0809:00020409', '0419:00000419'$lang_en=new-winuserlanguagelist en-gb$lang_en[0].inputmethodtips.clear()$lang_en[0].inputmethodtips.add($keys[0])$lang_ru=new-winuserlanguagelist ru$lang_ru[0].inputmethodtips.clear()$lang_ru[0].inputmethodtips.add($keys[1])$langlist=$lang_en,$lang_ru设置-winuserlanguagelist $langlist
请检查以下注释代码片段:
PS D:\PShell>### 类型不匹配$langlist=$lang_en,$lang_ru### 注意类型的区别:$langlist.gettype().Name ### Object[](Get-WinUserLanguageList).gettype().Name ### List`1
<块引用>
对象[]列表`1
PS D:\PShell>### 使用以下内容:$langlist = Get-WinUserLanguageList$langlist.Clear()$langlist.Add($lang_en[0])$langlist.Add($lang_ru[0])$langlist.gettype().Name ### List`1
<块引用>
列表`1
PS D:\PShell><### 下一个 cmdlet 现在应该可以工作了:设置-winuserlanguagelist $langlist<##>
I'm building a code to fix keyboard layout situation on windows 10. With automated solution, I decided to use powershell. But the problem is that I'm pretty new in it and face certain problems. I managed to dig a script to change keyboard layouts, however it changes only to one language. As I try to create array with 2 languages:
$langlist=$lang_en,$lang_ru
set-winuserlanguagelist $langlist
It simply returns me next error:
Set-WinUserLanguageList : Cannot convert 'Microsoft.InternationalSettings.Commands.WinUserLanguage' to the type
'Microsoft.InternationalSettings.Commands.WinUserLanguage' required by parameter 'LanguageList'. Specified method is
not supported.
At line:1 char:25
+ set-winuserlanguagelist $langlist
+ ~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Set-WinUserLanguageList], ParameterBindingException
+ FullyQualifiedErrorId : CannotConvertArgument,Microsoft.InternationalSettings.Commands.SetWinUserLanguageListCommand
When I tried to use next command: $test = Get-WinUserLanguageList
, the command works well with set-winuserlanguagelist
.
The full script:
$keys='0809:00020409', '0419:00000419'
$lang_en=new-winuserlanguagelist en-gb
$lang_en[0].inputmethodtips.clear()
$lang_en[0].inputmethodtips.add($keys[0])
$lang_ru=new-winuserlanguagelist ru
$lang_ru[0].inputmethodtips.clear()
$lang_ru[0].inputmethodtips.add($keys[1])
$langlist=$lang_en,$lang_ru
set-winuserlanguagelist $langlist
Please check the following commented code snippets:
PS D:\PShell> ### Type mismatch
$langlist=$lang_en,$lang_ru
### Note the difference in type:
$langlist.gettype().Name ### Object[]
(Get-WinUserLanguageList).gettype().Name ### List`1
Object[] List`1
PS D:\PShell> ### Use the following:
$langlist = Get-WinUserLanguageList
$langlist.Clear()
$langlist.Add($lang_en[0])
$langlist.Add($lang_ru[0])
$langlist.gettype().Name ### List`1
List`1
PS D:\PShell> <### The next cmdlet should work now:
set-winuserlanguagelist $langlist
<##>
这篇关于与 set-winuserlanguagelist 命令相关的问题/问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!