我正在尝试使用Invoke-WMI方法在Win32_ComputerSytem类上调用Rename方法。使用此语法可以正常工作
(gwmi win32_ComputerSystem).Rename("NEWNAME")
这也可以用于演示
Invoke-WmiMethod -path win32_process -Name create -ArgumentList notepad
但是,当我尝试以下操作时,出现错误
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
我想念什么?
最佳答案
您需要使用Path参数指定Win32_ComputerSystem类的实例:
PS C:\Users\ben> $path = "Win32_ComputerSystem.Name='OLDNAME'"
PS C:\Users\ben> Invoke-WmiMethod -Name Rename -Path $path -ArgumentList "NEWNAME"
__GENUS : 2
__CLASS : __PARAMETERS
__SUPERCLASS :
__DYNASTY : __PARAMETERS
__RELPATH :
__PROPERTY_COUNT : 1
__DERIVATION : {}
__SERVER :
__NAMESPACE :
__PATH :
ReturnValue : 0
在功能上等效于您所引用的gwmi Rename语法。此语法隐式检索Win32_ComputerSystem类的实例,以在以下位置调用该方法:
PS C:\Users\ben> (gwmi win32_computersystem).rename("NEWNAME")
__GENUS : 2
__CLASS : __PARAMETERS
__SUPERCLASS :
__DYNASTY : __PARAMETERS
__RELPATH :
__PROPERTY_COUNT : 1
__DERIVATION : {}
__SERVER :
__NAMESPACE :
__PATH :
ReturnValue : 0
这是另一个很酷的语法:
PS C:\Users\ben> ([wmi]"Win32_ComputerSystem.Name='OLDNAME'").Rename("NEWNAME")
__GENUS : 2
__CLASS : __PARAMETERS
__SUPERCLASS :
__DYNASTY : __PARAMETERS
__RELPATH :
__PROPERTY_COUNT : 1
__DERIVATION : {}
__SERVER :
__NAMESPACE :
__PATH :
ReturnValue : 0
关于powershell - 如何使用Invoke-WmiMethod重命名计算机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3112968/