【问题标题】:How to pass arguments to a WMI method via WMIC command line?如何通过 WMIC 命令行将参数传递给 WMI 方法?
【发布时间】: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


    【解决方案1】:

    我相信类似以下内容:

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-29
      • 2020-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多