Reputation: 135
I'm trying to set a value with the PowerShell cmdled Invoke-CimMethod, but I'm getting an error "Invalid method" and i'm at a bit of a loss at the moment. This is my code
Invoke-CimMethod -Query 'SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=1' -MethodName EnableWINS -Arguments @{WINSEnableLMHostsLookup=[Boolean]$false}
According to the documentation, the argument "WINSEnableLMHostsLookup" should be a bool, but for some reason it just doesn't work this way.
Can anyone share some insights?
Upvotes: 3
Views: 873
Reputation: 27491
That is a static method, like in any programming language, not an instance method. You don't need to run some kind of constructor first, or find an existing object. It sets a default. Use -classname with static methods. It's not the most user friendly or well documented.
Invoke-CimMethod -ClassName Win32_NetworkAdapterConfiguration -Arguments @{WINSEnableLMHostsLookup=$false} -MethodName EnableWINS
# or arguments by position
Invoke-CimMethod Win32_NetworkAdapterConfiguration @{WINSEnableLMHostsLookup=$false} EnableWINS
Old way with the wmiclass type accelerator:
$NicClass = [wmiclass]'Win32_NetworkAdapterConfiguration'
$NicClass.EnableWINS($false, $false)
CIM is self-documenting if you really want to dig into it. The qualifiers will say whether a method is static.
get-cimclass Win32_NetworkAdapterConfiguration | % cimclassmethods |
select name,qualifiers
Name Qualifiers
---- ----------
EnableWINS {Implemented, MappingStrings, Static, ValueMap}
Hmm, what is "CQL"?
Upvotes: 3