共用方式為


Invoke-WmiMethod

呼叫 Windows Management Instrumentation (WMI) 方法。

語法

Invoke-WmiMethod [-Class] <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>] [-Namespace <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>] [-Namespace <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>] [-Namespace <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>] [-Namespace <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>] [-Namespace <string>] [-Name] <string> [-AsJob] [-ThrottleLimit <int>] [-Confirm] [-WhatIf] [<CommonParameters>]

描述

Invoke-WmiMethod Cmdlet 會呼叫 WMI 方法。

參數

-ArgumentList <Object[]>

指定參數以傳遞給呼叫的方法。這個參數的值必須為物件陣列,而且必須按照呼叫之方法要求的順序顯示。

重要事項:需要第二個 $null 值,否則此命令會產生錯誤,例如「無法將型別 'System.Byte' 的物件轉換為型別 '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:Unchanged

0:Default

1:None (不執行驗證)。

2:Connect (只有當用戶端與應用程式建立關聯性時才會執行驗證)。

3:Call (當應用程式收到要求時只會在每個呼叫的開頭執行驗證)。

4:Packet (對所有從用戶端接收的資料執行驗證)。

5:PacketIntegrity (對所有在用戶端與應用程式之間傳輸的資料進行驗證及確認)。

6:PacketPrivacy (使用其他驗證等級的屬性,而且加密所有的資料)。

必要?

false

位置?

named

預設值

接受管線輸入?

false

接受萬用字元?

false

-Authority <string>

指定要用來驗證 WMI 連線的授權單位。您可以指定標準 NTLM 或 Kerberos 驗證。若要使用 NTLM,請將授權單位設定設為 ntlmdomain:<DomainName>,其中 <DomainName> 可識別有效的 NTLM 網域名稱。若要使用 Kerberos,請指定 kerberos:<DomainName\ServerName>。連線到本機電腦時不能包含授權單位設定。

必要?

false

位置?

named

預設值

接受管線輸入?

false

接受萬用字元?

false

-Class <string>

指定包含呼叫之靜態方法的 WMI 類別。

必要?

true

位置?

1

預設值

接受管線輸入?

false

接受萬用字元?

false

-ComputerName <string[]>

指定要對其執行管理作業的電腦。此值可以是完整網域名稱、NetBIOS 名稱或網際網路通訊協定 (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:Default (讀取預設模擬等級的本機登錄,該等級通常設為「3:Impersonate」)。

1:Anonymous (隱藏呼叫端的認證)。

2:Identify (允許物件查詢呼叫端的認證)。

3:Impersonate (允許物件使用呼叫端的認證)。

4:Delegate (讓物件允許其他物件使用呼叫端的認證)。

必要?

false

位置?

named

預設值

接受管線輸入?

false

接受萬用字元?

false

-InputObject <ManagementObject>

指定當做輸入使用的 ManagementObject 物件。使用這個參數時,會忽略除了 Flag 與 Argument 參數以外的所有其他參數。

必要?

true

位置?

named

預設值

接受管線輸入?

true (ByValue)

接受萬用字元?

false

-Locale <string>

指定 WMI 物件慣用的地區設定。您可以依照慣用順序以 MS_<LCID> 格式將 Locale 參數的值指定為陣列。

必要?

false

位置?

named

預設值

接受管線輸入?

false

接受萬用字元?

false

-Name <string>

指定要叫用的方法名稱。此參數是必要的,不能是 null 或空的。

必要?

true

位置?

2

預設值

接受管線輸入?

false

接受萬用字元?

false

-Namespace <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 方法,以啟動 [記事本] 的執行個體。

注意:如果完成此命令,ReturnValue 屬性會填入 0,而 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 方法套用至該特定執行個體。

注意:如果完成此命令,ReturnValue 屬性會填入 0。





請參閱

概念

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