如何通过 WMIC 命令行将参数传递给 WMI 方法?
How to pass arguments to a WMI method via WMIC command line?
我正在尝试使用 WMIC 命令从 WESL_UserSetting
class 执行 SetCustomShell
方法。 class 位于 Windows 10 Enterprise 中的非默认 \root\StandardCimv2\Embedded
命名空间中。
我已经启用了自定义 shell 功能,并且我知道 class 已正确安装,因为命令:
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 执行此操作。有许多关于如何使用各种语言的脚本执行此操作的示例。但是我需要从组策略或在 OS 部署期间执行它,而不必依赖客户端可以看到它的某个地方可用的脚本文件,并且这个 应该 成为我可以用一个命令完成的事情。
我相信以下内容:
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)
我正在尝试使用 WMIC 命令从 WESL_UserSetting
class 执行 SetCustomShell
方法。 class 位于 Windows 10 Enterprise 中的非默认 \root\StandardCimv2\Embedded
命名空间中。
我已经启用了自定义 shell 功能,并且我知道 class 已正确安装,因为命令:
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 执行此操作。有许多关于如何使用各种语言的脚本执行此操作的示例。但是我需要从组策略或在 OS 部署期间执行它,而不必依赖客户端可以看到它的某个地方可用的脚本文件,并且这个 应该 成为我可以用一个命令完成的事情。
我相信以下内容:
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)