Register-WmiEvent
訂閱 Windows Management Instrumentation (WMI) 事件。
Syntax
Register-WmiEvent
[-Namespace <String>]
[-Credential <PSCredential>]
[-ComputerName <String>]
[-Class] <String>
[-Timeout <Int64>]
[[-SourceIdentifier] <String>]
[[-Action] <ScriptBlock>]
[-MessageData <PSObject>]
[-SupportEvent]
[-Forward]
[-MaxTriggerCount <Int32>]
[<CommonParameters>]
Register-WmiEvent
[-Namespace <String>]
[-Credential <PSCredential>]
[-ComputerName <String>]
[-Query] <String>
[-Timeout <Int64>]
[[-SourceIdentifier] <String>]
[[-Action] <ScriptBlock>]
[-MessageData <PSObject>]
[-SupportEvent]
[-Forward]
[-MaxTriggerCount <Int32>]
[<CommonParameters>]
Description
Cmdlet Register-WmiEvent
會訂閱本機計算機或遠端電腦上的 Windows Management Instrumentation (WMI) 事件。
引發已訂閱的 WMI 事件時,即使事件發生在遠端電腦上,也會將其新增至本機會話中的事件佇列。 若要取得事件佇列中的事件,請使用 Get-Event
Cmdlet。
您可以使用 的參數 Register-WmiEvent
來訂閱遠端電腦上的事件,並指定事件屬性值,以協助您識別佇列中的事件。 您也可以使用 Action 參數來指定引發訂閱事件時要採取的動作。
當您訂閱事件時,事件訂閱者會新增至您的會話。 若要在會話中取得事件訂閱者,請使用 Get-EventSubscriber
Cmdlet。 若要取消訂閱,請使用 Unregister-Event
Cmdlet,從會話中刪除事件訂閱者。
新的 Common Information Model (CIM) Cmdlet 引進 Windows PowerShell 3.0,會執行與 WMI Cmdlet 相同的工作。 CIM Cmdlet 符合 WS-Management (WSMan) 標準和 CIM 標準,這可讓 Cmdlet 使用相同的技術來管理執行 Windows 作業系統的電腦,以及執行其他操作系統的計算機。 請考慮使用 Register-CimIndicationEvent Cmdlet,而不是使用 。Register-WmiEvent
範例
範例 1:訂閱類別所產生的事件
此命令會訂閱 Win32_ProcessStartTrace 類別所產生的事件。 每當進程啟動時,這個類別就會引發事件。
Register-WmiEvent -Class 'Win32_ProcessStartTrace' -SourceIdentifier "ProcessStarted"
範例 2:訂閱進程的建立事件
此命令會使用查詢來訂閱Win32_process實例建立事件。
$wmiParameters = @{
Query = "select * from __instancecreationevent within 5 where targetinstance isa 'win32_process'"
SourceIdentifier = "WMIProcess"
MessageData = "Test 01"
TimeOut = 500
}
Register-WmiEvent @wmiParameters
範例 3:使用動作來回應事件
此範例示範如何使用動作來回應事件。 在此情況下,當進程啟動時, Start-Process
目前會話中的任何命令會寫入 XML 檔案。
$action = { Get-History | where { $_.commandline -like "*start-process*" } | export-cliXml "commandHistory.clixml" }
Register-WmiEvent -Class 'Win32_ProcessStartTrace' -SourceIdentifier "ProcessStarted" -Action $action
Id Name State HasMoreData Location Command
-- ---- ----- ----------- -------- -------
1 ProcessStarted NotStarted False get-history | where {...
當您使用 Action 參數時, Register-WmiEvent
會傳回代表事件動作的背景作業。 您可以使用 作業 Cmdlet,例如 Get-Job
和 Receive-Job
來管理事件作業。
如需詳細資訊,請參閱 about_Jobs。
範例 4:註冊遠端電腦上的事件
此範例會在 Server01 遠端電腦上註冊事件。
Register-WmiEvent -Class 'Win32_ProcessStartTrace' -SourceIdentifier "Start" -Computername Server01
Get-Event -SourceIdentifier "Start"
WMI 會將事件傳回本機計算機,並將其儲存在目前會話的事件佇列中。 若要擷取事件,請執行本機 Get-Event
命令。
參數
-Action
指定處理事件的命令。 Action 參數中的命令會在引發事件時執行,而不是將事件傳送至事件佇列。 以大括弧 ({}
) 括住命令,以建立腳本區塊。
Action 的值可以包含 $Event
、$EventSubscriber
、$Sender
、 $EventArgs
和 $Args
自動變數,其會將事件的相關信息提供給 Action 腳本區塊。 如需詳細資訊,請參閱 about_Automatic_Variables。
當您指定動作時, Register-WmiEvent
會傳回代表該動作的事件作業物件。 您可以使用包含 Job 名詞 (Job Cmdlet) 的 Cmdlet 來管理事件作業。
Type: | ScriptBlock |
Position: | 101 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Class
指定您要訂閱的事件。 輸入產生事件的 WMI 類別。 每個命令都需要 Class 或 Query 參數。
Type: | String |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ComputerName
指定命令執行所在的計算機名稱。 預設是本機電腦。
輸入 NetBIOS 名稱、IP 位址或電腦的完整功能變數名稱。 若要指定本機計算機,請輸入計算機名稱、點 (.
) 或localhost。
此參數不依賴 Windows PowerShell 遠端處理。 即使您的電腦未設定為執行遠端命令,您也可以使用 ComputerName 參數。
Type: | String |
Aliases: | Cn |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Credential
指定具有執行此動作許可權的用戶帳戶。 預設為目前使用者。
輸入用戶名稱,例如User01或Domain01\User01,或輸入 PSCredential 物件,例如 Cmdlet 所產生的 Get-Credential
物件。 如果您輸入使用者名稱,此 Cmdlet 會提示您輸入密碼。
Type: | PSCredential |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Forward
指出此 Cmdlet 會將此訂用帳戶的事件傳送至本機電腦上的會話。 當您在遠端電腦或遠端工作階段中註冊事件時,請使用此參數。
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-MaxTriggerCount
指定觸發程式計數上限。
Type: | Int32 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-MessageData
指定要與此事件訂閱相關聯的任何其他數據。 此參數的值會出現在此 訂用帳戶相關聯之所有事件的 MessageData 屬性中。
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Namespace
指定 WMI 類別的命名空間。
Type: | String |
Aliases: | NS |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Query
指定 WMI 查詢語言 (WQL) 中的查詢,以識別 WMI 事件類別,例如: select * from __InstanceDeletionEvent
。
Type: | String |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SourceIdentifier
指定您為訂用帳戶選取的名稱。 您選取的名稱在目前工作階段中必須是唯一的。 預設值是 Windows PowerShell 指派的 GUID。
此參數的值會出現在 訂閱者物件的SourceIdentifier 屬性值,以及與此訂閱相關聯的所有事件物件。
Type: | String |
Position: | 100 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SupportEvent
表示此 Cmdlet 會隱藏事件訂閱。 當目前的訂用帳戶是更複雜的事件註冊機制的一部分,且不應該獨立探索時,請使用此參數。
若要檢視或取消使用 SupportEvent 參數建立的訂用帳戶,請指定 和 Unregister-Event
Cmdlet 的 Get-EventSubscriber
Force 參數。
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Timeout
指定 Windows PowerShell 等候此命令完成的時間長度。
默認值 0 (零),表示沒有逾時,而且會導致 Windows PowerShell 無限期等候。
Type: | Int64 |
Aliases: | TimeoutMSec |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
輸入
None
您無法使用管線將物件傳送至此 Cmdlet。
輸出
None
此 Cmdlet 不會產生任何輸出。
備註
若要在 Windows Vista 或更新版本的 Windows 作業系統中使用此 Cmdlet,請使用 [以系統管理員身分執行] 選項啟動 Windows PowerShell。
事件、事件訂閱和事件佇列只存在於目前的會話中。 如果您關閉目前的會話,則會捨棄事件佇列,並取消事件訂閱。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應