【发布时间】:2018-01-23 20:09:13
【问题描述】:
我正在尝试使用 WMIC 命令从 WESL_UserSetting 类执行 SetCustomShell 方法。该类位于 Windows 10 企业版中的非默认 \\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 来做到这一点。关于如何使用各种语言的脚本执行此操作的示例很多。但我需要从组策略或操作系统部署期间执行它,而不必依赖客户端可以看到的某个地方可用的脚本文件,而这应该是我可以用单个命令。
【问题讨论】:
标签: windows command-line wmi wmic