Invoke-CimMethod

调用 CIM 类的 方法。

语法

Invoke-CimMethod
      [-ClassName] <String>
      [-ComputerName <String[]>]
      [[-Arguments] <IDictionary>]
      [-MethodName] <String>
      [-Namespace <String>]
      [-OperationTimeoutSec <UInt32>]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Invoke-CimMethod
      [-ClassName] <String>
      -CimSession <CimSession[]>
      [[-Arguments] <IDictionary>]
      [-MethodName] <String>
      [-Namespace <String>]
      [-OperationTimeoutSec <UInt32>]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Invoke-CimMethod
      -ResourceUri <Uri>
      [-ComputerName <String[]>]
      [[-Arguments] <IDictionary>]
      [-MethodName] <String>
      [-Namespace <String>]
      [-OperationTimeoutSec <UInt32>]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Invoke-CimMethod
      [-ResourceUri <Uri>]
      [-InputObject] <CimInstance>
      -CimSession <CimSession[]>
      [[-Arguments] <IDictionary>]
      [-MethodName] <String>
      [-OperationTimeoutSec <UInt32>]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Invoke-CimMethod
      [-ResourceUri <Uri>]
      [-InputObject] <CimInstance>
      [-ComputerName <String[]>]
      [[-Arguments] <IDictionary>]
      [-MethodName] <String>
      [-OperationTimeoutSec <UInt32>]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Invoke-CimMethod
      -ResourceUri <Uri>
      -CimSession <CimSession[]>
      [[-Arguments] <IDictionary>]
      [-MethodName] <String>
      [-Namespace <String>]
      [-OperationTimeoutSec <UInt32>]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Invoke-CimMethod
      [-CimClass] <CimClass>
      [-ComputerName <String[]>]
      [[-Arguments] <IDictionary>]
      [-MethodName] <String>
      [-OperationTimeoutSec <UInt32>]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Invoke-CimMethod
      [-CimClass] <CimClass>
      -CimSession <CimSession[]>
      [[-Arguments] <IDictionary>]
      [-MethodName] <String>
      [-OperationTimeoutSec <UInt32>]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Invoke-CimMethod
      -Query <String>
      [-QueryDialect <String>]
      [-ComputerName <String[]>]
      [[-Arguments] <IDictionary>]
      [-MethodName] <String>
      [-Namespace <String>]
      [-OperationTimeoutSec <UInt32>]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Invoke-CimMethod
      -Query <String>
      [-QueryDialect <String>]
      -CimSession <CimSession[]>
      [[-Arguments] <IDictionary>]
      [-MethodName] <String>
      [-Namespace <String>]
      [-OperationTimeoutSec <UInt32>]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]

说明

此 cmdlet 仅在 Windows 平台上可用。

cmdlet Invoke-CimMethod 使用 Arguments 参数指定的名称/值对调用 CIM 类或 CIM 实例的方法。

如果未指定 InputObject 参数,则 cmdlet 通过以下方式之一工作:

  • 如果 ComputerName 参数和 CimSession 参数均未指定,则此 cmdlet 适用于使用组件对象模型 (COM) 会话的本地 Windows Management Instrumentation (WMI) 。
  • 如果指定 了 ComputerName 参数或 CimSession 参数,则此 cmdlet 适用于 ComputerName 参数或 CimSession 参数指定的 CIM 服务器。

如果指定了 InputObject 参数,则 cmdlet 通过以下方式之一工作:

  • 如果 ComputerName 参数和 CimSession 参数均未指定,则此 cmdlet 将使用输入对象中的 CIM 会话或计算机名称。
  • 如果指定 了 ComputerName 参数或 CimSession 参数,则此 cmdlet 将使用 CimSession 参数值或 ComputerName 参数值。 此场景不太常见。

示例

示例 1:调用方法

此示例调用 Win32_Process 类的 Terminate 方法。

Invoke-CimMethod -Query 'select * from Win32_Process where name like "notepad%"' -MethodName "Terminate"

示例 2:使用 CIM 实例对象调用方法

此示例检索 CIM 实例对象,并使用 cmdlet 将其存储在名为 $xGet-CimInstance 变量中。 然后,该变量的内容将用作 cmdlet 的 Invoke-CimMethodInputObject。 为 CimInstance 调用 GetOwner 方法。

$x = Get-CimInstance -Query 'Select * from Win32_Process where name like "notepad%"'
Invoke-CimMethod -InputObject $x -MethodName GetOwner

示例 3:使用参数调用静态方法

此示例使用 Arguments 参数调用名为 Create 方法。

Invoke-CimMethod -ClassName Win32_Process -MethodName "Create" -Arguments @{
  CommandLine = 'notepad.exe'; CurrentDirectory = "C:\windows\system32"
}

示例 4:客户端验证

此示例通过将 CimClass 对象Invoke-CimMethod传递给 ,对 xyz 方法执行客户端验证。

$c = Get-CimClass -ClassName Win32_Process
Invoke-CimMethod -CimClass $c -MethodName "xyz" -Arguments @{ CommandLine = 'notepad.exe' }

参数

-Arguments

指定要传递给被调用方法的参数。 将此参数的值指定为存储在哈希表中的名称/值对。 输入的值的顺序并不重要。

Type:IDictionary
Position:1
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-CimClass

指定表示服务器上的 CIM 类定义的 CIM 类对象。 调用类的静态方法时,请使用此参数。

可以使用 Get-CimClass cmdlet 从服务器检索类定义。

使用此参数可以更好地进行客户端架构验证。

Type:CimClass
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-CimSession

使用指定的 CIM 会话运行命令。 输入包含 CIM 会话的变量,或创建或获取 CIM 会话的命令,例如 New-CimSessionGet-CimSession cmdlet。 有关详细信息,请参阅 about_CimSession

Type:CimSession[]
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-ClassName

指定要为其执行操作的 CIM 类的名称。 此参数仅用于静态方法。 可以使用 Tab 自动补全来浏览类列表,因为 PowerShell 从本地 WMI 服务器获取类列表,以提供类名称的列表。

Type:String
Aliases:Class
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-ComputerName

指定要运行 CIM 操作的计算机的名称。 可以指定完全限定的域名 (FQDN) 、NetBIOS 名称或 IP 地址。

使用此参数时,cmdlet 使用 WsMan 协议创建与指定计算机的临时会话。 否则,cmdlet 使用组件对象模型 (COM) 在本地计算机上执行操作。

在同一台计算机上执行多个操作时,使用 CIM 会话进行连接以提高性能。

Type:String[]
Aliases:CN, ServerName
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Confirm

提示你在运行 cmdlet 之前进行确认。

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

指定要用作调用方法的输入的 CIM 实例对象。 此参数只能用于调用实例方法。 若要调用类静态方法,请使用 Class 参数或 CimClass 参数。

Type:CimInstance
Aliases:CimInstance
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-MethodName

指定要调用的 CIM 方法的名称。 此参数是必需的,不能为 null 或为空。 若要调用 CIM 类的静态方法,请使用 ClassNameCimClass 参数。

Type:String
Aliases:Name
Position:2
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Namespace

指定 CIM 操作的命名空间。 默认命名空间为 root/cimv2。 可以使用 Tab 自动补全来浏览命名空间列表,因为 PowerShell 从本地 WMI 服务器获取命名空间列表以提供命名空间列表。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-OperationTimeoutSec

指定 cmdlet 等待计算机响应的时间。 默认情况下,该值为 0,这意味着 cmdlet 使用服务器的默认超时值。

如果将 OperationTimeoutSec 参数设置为小于默认连接重试超时 3 分钟的值,则持续超过 OperationTimeoutSec 参数值的网络故障不可恢复。

Type:UInt32
Aliases:OT
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Query

指定要在 CIM 服务器上运行的查询。 对作为查询结果接收的实例调用 方法。 可以使用 QueryDialect 参数指定查询方言。

如果指定的值包含双引号 () " 、单引号 (') 或反斜杠 (\) ,则必须用反斜杠 (\) 字符作为前缀来转义这些字符。 如果指定的值使用 WQL LIKE 运算符,则必须通过将以下字符括在方括号 ([]) 来转义以下字符:百分比 (%) 、下划线 (_) 或左方括号 ([) 。

Type:String
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-QueryDialect

指定用于 Query 参数的查询语言。 此参数的可接受值为: WQLCQL

默认值为 WQL

Type:String
Position:Named
Default value:WQL
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-ResourceUri

指定资源类或实例的资源统一资源标识符 (URI) 。 URI 用于标识计算机上特定类型的资源,例如磁盘或进程。

URI 由前缀和指向资源的路径组成。 例如:

http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_LogicalDisk

http://intel.com/wbem/wscim/1/amt-schema/1/AMT_GeneralSettings

默认情况下,如果未指定此参数,则使用 DMTF 标准资源 URI http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/ ,并将类名追加到其中。

ResourceURI 只能与使用 WSMan 协议创建的 CIM 会话一起使用,或者在指定 ComputerName 参数(该参数使用 WSMan 创建 CIM 会话)时使用。

如果在未指定 ComputerName 参数的情况下指定此参数,或者指定使用 DCOM 协议创建的 CIM 会话,则会收到错误。 DCOM 协议不支持 ResourceURI 参数。

如果同时指定 了 ResourceUri 参数和 Filter 参数,则忽略 Filter 参数。

Type:Uri
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-WhatIf

显示运行该 cmdlet 时会发生什么情况。 此 cmdlet 未运行。

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

输入

CimClass

可以通过管道将 CIM 类传递给此 cmdlet。

CimInstance

可以通过管道将 CIM 实例传递给此 cmdlet。

输出

PSCustomObject

此 cmdlet 返回 对象。

备注

PowerShell 包含以下别名 Invoke-CimMethod

  • Windows:
    • icim

此 cmdlet 仅在 Windows 平台上可用。