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 平台上可用。

Invoke-CimMethod cmdlet 使用由 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 实例对象调用方法

此示例使用 Get-CimInstance cmdlet 检索 CIM 实例对象并将其存储在名为 $x 的变量中。 然后,该变量的内容将用作 Invoke-CimMethod cmdlet 的 InputObject。 为 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 类的静态方法,请使用 ClassName 或 CimClass 参数。

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 平台上可用。