与 set-winuserlanguagelist 命令相关的问题/问题 [英] Questions/Problems related to set-winuserlanguagelist command

查看:197
本文介绍了与 set-winuserlanguagelist 命令相关的问题/问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在构建一个代码来修复 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆