I am trying to call the Rename method on the Win32_ComputerSytem class using Invoke-WMI method. Using this syntax works fine
(gwmi win32_ComputerSystem).Rename("NEWNAME")
This also works fine for demo purposes
Invoke-WmiMethod -path win32_process -Name create -ArgumentList notepad
However, when i try the following, I get an error
11 > Invoke-WmiMethod -path win32_computersystem -Name Rename -ArgumentList IwasRenamed
Invoke-WmiMethod : Invalid method Parameter(s)
At line:1 char:17
+ Invoke-WmiMethod <<<< -path win32_computersystem -Name Rename -ArgumentList IwasRenamed
+ CategoryInfo : InvalidOperation: (:) [Invoke-WmiMethod], ManagementExcepti
on
+ FullyQualifiedErrorId : InvokeWMIManagementException,Microsoft.PowerShell.Commands.
InvokeWmiMethod
What am I missing?
You need to specify an instance of the class Win32_ComputerSystem using the Path parameter:
Which is functionally equivalent to the gwmi Rename syntax that you referred to. This syntax implicitly retrieves an instance of the class Win32_ComputerSystem to call the method on:
Here's another cool syntax:
The
Rename
method takes three parameters. I'm guessingInvoke-WmiMethod
uses reflection to call the method, so you have to specify all three parameters. Try this: