共用方式為


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>]

Description

此 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 實例物件叫用方法

此範例會擷取 CIM 實例物件,並使用 Get-CimInstance Cmdlet 將它儲存在名為 $x 的變數中。 然後,變數的內容會作為 Invoke-CimMethod Cmdlet 的 InputObjectGetOwner 方法會針對 CimInstance叫用。

$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

指定要傳遞至所呼叫方法的參數。 將此參數的值指定為儲存在哈希表中的名稱/值組。 輸入的值順序並不重要。

類型:IDictionary
Position:1
預設值:None
必要:False
接受管線輸入:True
接受萬用字元:False

-CimClass

指定 CIM 類別物件,代表伺服器上的 CIM 類別定義。 叫用 類別的靜態方法時,請使用此參數。

您可以使用 Get-CimClass Cmdlet,從伺服器擷取類別定義。

使用此參數會導致更好的客戶端架構驗證。

類型:CimClass
Position:0
預設值:None
必要:True
接受管線輸入:True
接受萬用字元:False

-CimSession

使用指定的 CIM 作業階段執行命令。 輸入包含 CIM 會話的變數,或建立或取得 CIM 工作階段的命令,例如 New-CimSessionGet-CimSession Cmdlet。 如需詳細資訊,請參閱 about_CimSession

類型:CimSession[]
Position:Named
預設值:None
必要:True
接受管線輸入:True
接受萬用字元:False

-ClassName

指定要執行作業之 CIM 類別的名稱。 此參數僅用於靜態方法。 您可以使用索引標籤自動完成來瀏覽類別清單,因為 PowerShell 會從本機 WMI 伺服器取得類別清單,以提供類別名稱清單。

類型:String
別名:Class
Position:0
預設值:None
必要:True
接受管線輸入:True
接受萬用字元:False

-ComputerName

指定您要執行 CIM 作業的電腦名稱。 您可以指定完整功能變數名稱 (FQDN)、NetBIOS 名稱或IP位址。

使用此參數時,Cmdlet 會使用 WsMan 通訊協定,對指定的計算機建立暫存會話。 否則,Cmdlet 會使用元件物件模型 (COM) 在本機計算機上執行作業。

在同一部計算機上執行多個作業時,使用 CIM 會話進行連線,以提升效能。

類型:String[]
別名:CN, ServerName
Position:Named
預設值:None
必要:False
接受管線輸入:True
接受萬用字元:False

-Confirm

在執行 Cmdlet 之前,提示您進行確認。

類型:SwitchParameter
別名:cf
Position:Named
預設值:False
必要:False
接受管線輸入:False
接受萬用字元:False

-InputObject

指定要作為叫用方法之輸入的 CIM 實例物件。 此參數只能用來叫用實例方法。 若要叫用類別靜態方法,請使用 Class 參數或 CimClass 參數。

類型:CimInstance
別名:CimInstance
Position:0
預設值:None
必要:True
接受管線輸入:True
接受萬用字元:False

-MethodName

指定要叫用的 CIM 方法名稱。 這個參數是必要參數,不能是 Null 或空白。 若要叫用 CIM 類別的靜態方法,請使用 ClassNameCimClass 參數。

類型:String
別名:Name
Position:2
預設值:None
必要:True
接受管線輸入:True
接受萬用字元:False

-Namespace

指定 CIM 作業的命名空間。 預設命名空間 root/cimv2。 您可以使用索引標籤自動完成來瀏覽命名空間清單,因為 PowerShell 會從本機 WMI 伺服器取得命名空間清單,以提供命名空間清單。

類型:String
Position:Named
預設值:None
必要:False
接受管線輸入:True
接受萬用字元:False

-OperationTimeoutSec

指定 Cmdlet 等候電腦回應的時間量。 根據預設,值為 0,這表示 Cmdlet 會使用伺服器的預設逾時值。

如果 OperationTimeoutSec 參數設定為小於預設連線重試逾時 3 分鐘的值,則無法復原超過 operationTimeoutSec 參數 值的網路失敗。

類型:UInt32
別名:OT
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-Query

指定要在 CIM 伺服器上執行的查詢。 在查詢結果收到的實例上叫用方法。 您可以使用 QueryDialect 參數來指定查詢方言。

如果指定的值包含雙引號(")、單引號('),或反斜杠(\),您必須以反斜杠(\)字元前置詞來逸出這些字元。 如果指定的值使用 WQL LIKE 運算符,則必須將下列字元括在方括弧中([]):百分比(%)、底線(_),或左方括號([)。

類型:String
Position:Named
預設值:None
必要:True
接受管線輸入:True
接受萬用字元:False

-QueryDialect

指定用於 Query 參數的查詢語言。 此參數可接受的值為:WQL 或 CQL

預設值為 WQL

類型:String
Position:Named
預設值:WQL
必要:False
接受管線輸入:True
接受萬用字元: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 會話搭配使用,或在指定使用 WSMan 建立 CIM 會話的 ComputerName 參數時使用。

當您指定此參數而不指定 ComputerName 參數,或指定使用 DCOM 通訊協定建立的 CIM 工作階段時,您會收到錯誤。 DCOM 通訊協定不支援 ResourceURI 參數。

如果同時指定 ResourceUri 參數和 Filter 參數,則會忽略 Filter 參數。

類型:Uri
Position:Named
預設值:None
必要:False
接受管線輸入:True
接受萬用字元:False

-WhatIf

顯示 Cmdlet 執行時會發生什麼事。 Cmdlet 未執行。

類型:SwitchParameter
別名:wi
Position:Named
預設值:False
必要:False
接受管線輸入:False
接受萬用字元:False

輸入

CimClass

您可以使用管線將 CIM 類別傳送至此 Cmdlet。

CimInstance

您可以使用管線將 CIM 實例傳送至此 Cmdlet。

輸出

PSCustomObject

此 Cmdlet 會傳回 物件。

備註

PowerShell 包含下列 Invoke-CimMethod別名:

  • 窗戶:
    • icim

此 Cmdlet 僅適用於 Windows 平臺。