Invoke-CimMethod 的无效(静态)方法

Invalid (static) method with Invoke-CimMethod

我正在尝试使用 PowerShell cmdled Invoke-CimMethod 设置一个值,但出现错误 "Invalid method",我现在有点不知所措。这是我的代码

Invoke-CimMethod -Query 'SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=1' -MethodName EnableWINS -Arguments @{WINSEnableLMHostsLookup=[Boolean]$false}

根据文档,参数 "WINSEnableLMHostsLookup" 应该是一个布尔值,但由于某些原因它不能这样工作。

https://docs.microsoft.com/en-us/windows/win32/cimwin32prov/settcpipnetbios-method-in-class-win32-networkadapterconfiguration

谁能分享一些见解?

这是一个静态方法,就像在任何编程语言中一样,而不是实例方法。您不需要先 运行 某种构造函数,或查找现有对象。它设置了一个默认值。将 -classname 与静态方法一起使用。它不是最用户友好的或有据可查的。

Invoke-CimMethod -ClassName Win32_NetworkAdapterConfiguration -Arguments @{WINSEnableLMHostsLookup=$false} -MethodName EnableWINS

# or arguments by position
Invoke-CimMethod Win32_NetworkAdapterConfiguration @{WINSEnableLMHostsLookup=$false} EnableWINS

wmiclass 类型加速器的旧方法:

$NicClass = [wmiclass]'Win32_NetworkAdapterConfiguration'
$NicClass.EnableWINS($false, $false) 

如果您真的想深入研究,CIM 是自文档化的。限定词会说明一个方法是否是静态的。

get-cimclass Win32_NetworkAdapterConfiguration | % cimclassmethods | 
  select name,qualifiers

Name       Qualifiers
----       ----------
EnableWINS {Implemented, MappingStrings, Static, ValueMap}

嗯,什么是 "CQL"?