我正在尝试使用WMIC命令从SetCustomShell
类执行WESL_UserSetting
方法。该类位于Windows 10 Enterprise中的非默认\\root\StandardCimv2\Embedded
命名空间中。
我已经启用了自定义shell功能,并且我知道该类已正确安装,因为命令:
wmic /namespace:\\root\StandardCimv2\Embedded CLASS WESL_UserSetting CALL SetCustomShell /?
生成此输出:
Call [ In/Out ]Params&type Status
==== ===================== ======
SetCustomShell [IN ]CustomReturnCodes(array of sint32) Implemented
[IN ]CustomReturnCodesAction(array of sint32)
[IN ]DefaultAction(sint32)
[IN ]Shell(string)
[IN ]Sid(string)
[OUT]ReturnValue(uint32)
这也对应Microsoft's documentation,(除了它列出参数的顺序不同),所以我认为我在这里的正确轨道上。但是我试图以多种不同的方式传递论据,而wmic
似乎并不能理解我想要做的事情。
我尝试过命名参数(即shell = xxx,Sid = xxx等),将整个列表括在引号中,仅将值括在引号中,用括号调用,然后用逗号进行爆破 - 分开的值。似乎没什么用。我总是最喜欢:
Invalid named parameter list.
Hint: <named param list> ::= <named param> | <named param> <named param list> where <named param> ::= <param name>=<param value>
或者:
Invalid format.
Hint: <paramlist> = <param> [, <paramlist>].
如何正确调用此方法?
具有讽刺意味的是,我知道如何使用VBScript或PowerShell执行此操作。有很多关于如何使用各种语言的脚本执行此操作的示例。但是我需要从组策略或操作系统部署中执行它,而不必依赖客户端可以看到的脚本文件,而应该是我可以用的单一命令。
答案 0 :(得分:0)
我相信以下内容:
wmic /namespace:\\root\StandardCimv2\Embedded CLASS WESL_UserSetting CALL SetCustomShell Sid="s-1-*" Shell="cmd.exe" DefaultAction=0 CustomReturnCodes=(0,1,2) CustomReturnCodesAction=(0,1,2)