调用 Windows Management Instrumentation (WMI) 方法。
语法
Invoke-WmiMethod [-类] <string> [[-ArgumentList] <Object[]>] [-Authentication {<Default> | <None> | <Connect> | <Call> | <Packet> | <PacketIntegrity> | <PacketPrivacy> | <Unchanged>}] [-Authority <string>] [-ComputerName <string[]>] [-Credential <PSCredential>] [-EnableAllPrivileges] [-Impersonation {<Default> | <Anonymous> | <Identify> | <Impersonate> | <Delegate>}] [-Locale <string>] [-命名空间 <string>] [-Name] <string> [-AsJob] [-ThrottleLimit <int>] [-Confirm] [-WhatIf] [<CommonParameters>] Invoke-WmiMethod [-Authentication {<Default> | <None> | <Connect> | <Call> | <Packet> | <PacketIntegrity> | <PacketPrivacy> | <Unchanged>}] [-Authority <string>] [-ComputerName <string[]>] [-Credential <PSCredential>] [-EnableAllPrivileges] [-Impersonation {<Default> | <Anonymous> | <Identify> | <Impersonate> | <Delegate>}] [-Locale <string>] [-命名空间 <string>] [-Name] <string> [-AsJob] [-ThrottleLimit <int>] [-Confirm] [-WhatIf] [<CommonParameters>] Invoke-WmiMethod -InputObject <ManagementObject> [-ArgumentList <Object[]>] [-Name] <string> [-AsJob] [-ThrottleLimit <int>] [-Confirm] [-WhatIf] [<CommonParameters>] Invoke-WmiMethod -Path <string> [-ArgumentList <Object[]>] [-Authentication {<Default> | <None> | <Connect> | <Call> | <Packet> | <PacketIntegrity> | <PacketPrivacy> | <Unchanged>}] [-Authority <string>] [-ComputerName <string[]>] [-Credential <PSCredential>] [-EnableAllPrivileges] [-Impersonation {<Default> | <Anonymous> | <Identify> | <Impersonate> | <Delegate>}] [-Locale <string>] [-命名空间 <string>] [-Name] <string> [-AsJob] [-ThrottleLimit <int>] [-Confirm] [-WhatIf] [<CommonParameters>] Invoke-WmiMethod [-Authentication {<Default> | <None> | <Connect> | <Call> | <Packet> | <PacketIntegrity> | <PacketPrivacy> | <Unchanged>}] [-Authority <string>] [-ComputerName <string[]>] [-Credential <PSCredential>] [-EnableAllPrivileges] [-Impersonation {<Default> | <Anonymous> | <Identify> | <Impersonate> | <Delegate>}] [-Locale <string>] [-命名空间 <string>] [-Name] <string> [-AsJob] [-ThrottleLimit <int>] [-Confirm] [-WhatIf] [<CommonParameters>] Invoke-WmiMethod [-Authentication {<Default> | <None> | <Connect> | <Call> | <Packet> | <PacketIntegrity> | <PacketPrivacy> | <Unchanged>}] [-Authority <string>] [-ComputerName <string[]>] [-Credential <PSCredential>] [-EnableAllPrivileges] [-Impersonation {<Default> | <Anonymous> | <Identify> | <Impersonate> | <Delegate>}] [-Locale <string>] [-命名空间 <string>] [-Name] <string> [-AsJob] [-ThrottleLimit <int>] [-Confirm] [-WhatIf] [<CommonParameters>]
说明
Invoke-WmiMethod cmdlet 调用 WMI 方法。
参数
-ArgumentList <Object[]>
指定要传递给被调用方法的参数。此参数的值必须是对象数组,这些对象必须按被调用方法所需的顺序进行显示。
重要说明:需要有另外一个 $null 值,否则此命令将生成一个错误,例如“Unable to cast object of type 'System.Byte' to type 'System.Array'.”。
下面的示例使用一个对象数组 ($binSD),并且后跟一个 null 值 ($null):
PS C:\> $acl = Get-Acl test.txt
PS C:\> $binSD = $acl.GetSecurityDescriptorBinaryForm()
PS C:\> invoke-wmimethod -class Win32_SecurityDescriptorHelper -Name BinarySDToSDDL -argumentlist $binSD, $null
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
-AsJob
将命令作为后台作业运行。使用此参数可运行需要较长时间才能完成的命令。
使用 AsJob 参数时,该命令返回表示后台作业的对象,然后显示命令提示符。当作业完成时,您可以继续在此会话中工作。如果 Invoke-WmiMethod 用于远程计算机,则作业在本地计算机上创建,并且来自远程计算机的结果将自动返回本地计算机。若要管理作业,请使用包含 Job 名词的 cmdlet (Job cmdlet)。要获取作业结果,请使用 Receive-Job cmdlet。
注意:若要将此参数用于远程计算机,必须为本地和远程计算机配置远程处理。此外,在 Windows Vista 和更高版本的 Windows 中,必须使用“以管理员身份运行”选项启动 Windows PowerShell。有关详细信息,请参阅 about_Remote_Requirements。
有关 Windows PowerShell 后台作业的详细信息,请参阅 about_Jobs 和 about_Remote_Jobs。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
-Authentication <AuthenticationLevel>
指定用于 WMI 连接的身份验证级别。有效值包括:
-1:不变
0:默认值
1:无(不执行身份验证。)
2:连接(仅当客户端与应用程序建立了关系时才执行身份验证。)
3:调用(应用程序收到请求时只在每次调用的开始执行身份验证。)
4:数据包(对从客户端收到的所有数据执行身份验证。)
5:数据包整体性(所有在客户端和应用程序之间传送的数据都经过身份验证和验证。)
6:数据包保密性(使用其他身份验证等级的属性,并且所有数据都加密。)
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
-Authority <string>
指定用于对 WMI 连接进行身份验证的授权机构。可以指定标准 NTLM 或 Kerberos 身份验证。若要使用 NTLM,请将授权机构设置设为“ntlmdomain:<DomainName>”,其中 <DomainName> 标识有效的 NTLM 域名。若要使用 Kerberos,请指定 kerberos:<DomainName\ServerName>。连接到本地计算机时不能包含授权机构设置。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
-类 <string>
指定包含要调用的静态方法的 WMI 类。
是否为必需? |
true |
位置? |
1 |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
-ComputerName <string[]>
指定要对其运行管理操作的计算机。值可以是完全限定的域名、NetBIOS 名称或 Internet 协议 (IP) 地址。使用本地计算机名称、localhost 或点 (.)指定本地计算机。默认值为本地计算机。当远程计算机与用户位于不同的域时,必须使用完全限定的域名。还可以通过使用管道将值传递给此参数来设置该参数的值。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
-Credential <PSCredential>
指定有权执行此操作的用户帐户。默认值为当前用户。键入用户名,例如“User01”、“Domain01\User01”或 User@Contoso.com。或者,输入 PSCredential 对象,例如 Get-Credential cmdlet 返回的对象。键入用户名时,将会提示您键入密码。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
-EnableAllPrivileges
在命令进行 WMI 调用之前,启用当前用户的所有权限。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
-Impersonation <ImpersonationLevel>
指定要使用的模拟级别。有效值包括:
0:默认值(读取本地注册表的默认模拟级别,通常设置为“3:模拟”。)
1:匿名(隐藏调用方的凭据。)
2:标识(允许对象查询调用方的凭据。)
3:模拟(允许对象使用调用方的凭据。)
4:委派(允许对象允许其他对象使用调用方的凭据。)
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
-InputObject <ManagementObject>
指定要用作输入的 ManagementObject 对象。如果使用此参数,则忽略 Flag 和 Argument 参数之外的所有其他参数。
是否为必需? |
true |
位置? |
named |
默认值 |
|
是否接受管道输入? |
true (ByValue) |
是否接受通配符? |
false |
-Locale <string>
指定 WMI 对象的首选区域设置。按喜爱顺序将 Locale 参数的值指定为 MS_<LCID> 格式的数组。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
-Name <string>
指定要调用的方法的名称。此参数是必需的,不能为 null 或为空。
是否为必需? |
true |
位置? |
2 |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
-命名空间 <string>
当此参数与 Class 参数一起使用时,它将指定引用的 WMI 类或对象所在的 WMI 存储库命名空间。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
-Path <string>
指定 WMI 类的 WMI 对象路径,或指定 WMI 类实例的 WMI 对象路径。指定的类或实例必须包含 Name 参数中指定的方法。
是否为必需? |
true |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
-ThrottleLimit <int>
允许用户为可同时执行的 WMI 操作数目指定一个限制值。此参数与 AsJob 参数一起使用。节流限制仅适用于当前命令,而不适用于会话或计算机。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
-Confirm
在执行命令之前提示您进行确认。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
-WhatIf
描述如果执行该命令会发生什么情况(无需实际执行该命令)。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
<CommonParameters>
此 cmdlet 支持通用参数:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。有关详细信息,请参阅 about_Commonparameters.
输入和输出
输入类型是指可通过管道传递给 cmdlet 的对象的类型。返回类型是指 Cmdlet 所返回对象的类型。
输入 |
None 此 cmdlet 不接受任何输入。 |
输出 |
None 此 cmdlet 将不产生任何输出。 |
示例 1
C:\PS>invoke-wmimethod -path win32_process -name create -argumentlist notepad.exe __GENUS : 2 __CLASS : __PARAMETERS __SUPERCLASS : __DYNASTY : __PARAMETERS __RELPATH : __PROPERTY_COUNT : 2 __DERIVATION : {} __SERVER : __NAMESPACE : __PATH : ProcessId : 4844 ReturnValue : 0 说明 ----------- 此命令通过调用 Win32_Process 类的 Create 方法来启动记事本实例。 注意:如果命令完成,则以 0 填充 ReturnValue 属性,以一个整数(下一进程 ID 号)填充 ProcessId 属性。
示例 2
C:\PS>invoke-wmimethod -path "CIM_DataFile.Name='C:\scripts\test.txt'" -Name Rename -ArgumentList "C:\scripts\test_bu.txt" __GENUS : 2 __CLASS : __PARAMETERS __SUPERCLASS : __DYNASTY : __PARAMETERS __RELPATH : __PROPERTY_COUNT : 1 __DERIVATION : {} __SERVER : __NAMESPACE : __PATH : ReturnValue : 0 说明 ----------- 此命令重命名文件。它使用 Path 参数来引用 CIM_DataFile 类的实例。然后,它将 Rename 方法应用于该特定实例。 注意:如果命令完成,则以 0 填充 ReturnValue 属性。
另请参阅