Invoke-WmiMethod

调用 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 所返回对象的类型。

输入

此 cmdlet 不接受任何输入。

输出

此 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 属性。





另请参阅

概念

Get-WmiObject
Remove-WmiObject
Set-WmiInstance
Get-WSManInstance
Invoke-WSManAction
New-WSManInstance
Remove-WSManInstance