Register-WmiEvent
订阅 Windows Management Instrumentation (WMI) 事件。
语法
class (默认值)
Register-WmiEvent
[-Class] <String>
[[-SourceIdentifier] <String>]
[[-Action] <ScriptBlock>]
[-Namespace <String>]
[-Credential <PSCredential>]
[-ComputerName <String>]
[-Timeout <Int64>]
[-MessageData <PSObject>]
[-SupportEvent]
[-Forward]
[-MaxTriggerCount <Int32>]
[<CommonParameters>]
query
Register-WmiEvent
[-Query] <String>
[[-SourceIdentifier] <String>]
[[-Action] <ScriptBlock>]
[-Namespace <String>]
[-Credential <PSCredential>]
[-ComputerName <String>]
[-Timeout <Int64>]
[-MessageData <PSObject>]
[-SupportEvent]
[-Forward]
[-MaxTriggerCount <Int32>]
[<CommonParameters>]
说明
Register-WmiEvent cmdlet 订阅本地计算机或远程计算机上的 Windows Management Instrumentation (WMI) 事件。
引发订阅的 WMI 事件时,即使事件发生在远程计算机上,也会将其添加到本地会话中的事件队列。 若要获取事件队列中的事件,请使用 Get-Event cmdlet。
可以使用 Register-WmiEvent 的参数来订阅远程计算机上的事件,并指定有助于识别队列中的事件的事件的属性值。
还可以使用 Action 参数指定要在引发订阅事件时执行的操作。
当您订阅一个事件时,一个事件订阅者将被添加到您的当前会话中。 若要在会话中获取事件订阅者,请使用 Get-EventSubscriber cmdlet。 若要取消订阅,请使用 Unregister-Event cmdlet,从会话中删除事件订阅服务器。
新的通用信息模型 (CIM) cmdlet(引入了 Windows PowerShell 3.0),执行与 WMI cmdlet 相同的任务。
CIM cmdlet 符合 WS-Management (WSMan) 标准和 CIM 标准,该标准使 cmdlet 能够使用相同的技术来管理运行 Windows 操作系统的计算机和运行其他操作系统的计算机。
请考虑使用 Register-WmiEvent cmdlet,而不是使用 。
示例
示例 1:订阅类生成的事件
PS C:\> Register-WmiEvent -Class 'Win32_ProcessStartTrace' -SourceIdentifier "ProcessStarted"
此命令订阅 Win32_ProcessStartTrace 类生成的事件。 每当进程启动时,此类就会引发事件。
示例 2:订阅进程的创建事件
PS C:\> Register-WmiEvent -Query "select * from __instancecreationevent within 5 where targetinstance isa 'win32_process'" -SourceIdentifier "WMIProcess" -MessageData "Test 01" -TimeOut 500
此命令使用查询来订阅Win32_process实例创建事件。
示例 3:使用操作响应事件
PS C:\> $action = { Get-History | where { $_.commandline -like "*start-process*" } | export-cliXml "commandHistory.clixml" }
PS C:\> Register-WmiEvent -Class 'Win32_ProcessStartTrace' -SourceIdentifier "ProcessStarted" -Action $action
Id Name State HasMoreData Location Command
-- ---- ----- ----------- -------- -------
1 ProcessStarted NotStarted False get-history | where {...
此示例演示如何使用操作来响应事件。 在这种情况下,当进程启动时,当前会话中的任何 Start-Process 命令将写入 XML 文件。
使用 Action 参数时,Register-WmiEvent 返回表示事件操作的后台作业。 可以使用 作业 cmdlet(如 Get-Job 和 Receive-Job)来管理事件作业。
有关详细信息,请参阅about_Jobs。
示例 4:在远程计算机上注册事件
PS C:\> Register-WmiEvent -Class 'Win32_ProcessStartTrace' -SourceIdentifier "Start" -Computername Server01
PS C:\> Get-Event -SourceIdentifier "Start"
此示例在 Server01 远程计算机上注册事件。
WMI 将事件返回到本地计算机,并将其存储在当前会话中的事件队列中。 若要检索事件,请运行本地 Get-Event 命令。
参数
-Action
指定处理事件的命令。 当引发事件而不是将事件发送到事件队列时,Action 参数中的命令运行。 将命令括在大括号 ({ }) 中以创建脚本块。
操作 的值可以包括$Event、$EventSubscriber、$Sender、$EventArgs和$Args自动变量,这些变量向 操作 脚本块提供有关事件的信息。 有关详细信息,请参阅about_Automatic_Variables。
指定操作时,Register-WmiEvent 返回表示该操作的事件作业对象。 可以使用包含 作业 名词(作业 cmdlet)的 cmdlet 来管理事件作业。
参数属性
| 类型: | ScriptBlock |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
(All)
| Position: | 101 |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-Class
指定要订阅的事件。 输入生成事件的 WMI 类。 每个命令都需要 类 或 Query 参数。
参数属性
| 类型: | String |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
class
| Position: | 0 |
| 必需: | True |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-ComputerName
指定运行命令的计算机的名称。 默认值为本地计算机。
键入 NetBIOS 名称、IP 地址或计算机的完全限定域名。 若要指定本地计算机,请键入计算机名称、点(.)或 localhost。
此参数不依赖于 Windows PowerShell 远程处理。 即使计算机未配置为运行远程命令,也可以使用 ComputerName 参数。
参数属性
| 类型: | String |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
| 别名: | Cn |
参数集
(All)
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-Credential
指定有权执行此作的用户帐户。 默认值为当前用户。
键入用户名(如 User01 或 Domain01\User01),或输入 PSCredential 对象,例如由 Get-Credential cmdlet 生成的用户名。 如果键入用户名,此 cmdlet 会提示输入密码。
参数属性
| 类型: | PSCredential |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
(All)
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-Forward
指示此 cmdlet 将此订阅的事件发送到本地计算机上的会话。 在远程计算机或远程会话中注册事件时,请使用此参数。
参数属性
| 类型: | SwitchParameter |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
(All)
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-MaxTriggerCount
指定最大触发器计数。
参数属性
| 类型: | Int32 |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
(All)
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-MessageData
指定要与此事件订阅关联的任何其他数据。 此参数的值显示在与此订阅关联的所有事件的 MessageData 属性中。
参数属性
| 类型: | PSObject |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
(All)
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-Namespace
指定 WMI 类的命名空间。
参数属性
| 类型: | String |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
| 别名: | NS |
参数集
(All)
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-Query
指定 WMI 查询语言(WQL)中的查询,用于标识 WMI 事件类,例如:select * from __InstanceDeletionEvent。
参数属性
| 类型: | String |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
query
| Position: | 0 |
| 必需: | True |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-SourceIdentifier
指定为订阅选择的名称。 所选名称在当前会话中必须是唯一的。 默认值为 Windows PowerShell 分配的 GUID。
此参数的值显示在订阅服务器对象的 SourceIdentifier 属性和与此订阅关联的所有事件对象的值中。
参数属性
| 类型: | String |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
(All)
| Position: | 100 |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-SupportEvent
指示此 cmdlet 隐藏事件订阅。 当当前订阅是更复杂的事件注册机制的一部分且不应独立发现时,请使用此参数。
若要查看或取消使用 SupportEvent 参数创建的订阅,请指定 Get-EventSubscriber 和 Unregister-Event cmdlet 的 Force 参数。
参数属性
| 类型: | SwitchParameter |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
(All)
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-Timeout
指定 Windows PowerShell 等待此命令完成的时间。
默认值 0(零)表示没有超时,这会导致 Windows PowerShell 无限期等待。
参数属性
| 类型: | Int64 |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
| 别名: | TimeoutMSec |
参数集
(All)
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
CommonParameters
此 cmdlet 支持通用参数:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 有关详细信息,请参阅 about_CommonParameters。
输入
None
不能通过管道将对象传递给此 cmdlet。
输出
None
此 cmdlet 将不生成任何输出。
备注
若要在 Windows Vista 或更高版本的 Windows 操作系统中使用此 cmdlet,请使用“以管理员身份运行”选项启动 Windows PowerShell。
事件、事件订阅和事件队列仅存在于当前会话中。 如果关闭当前会话,事件队列将被丢弃,事件订阅也将被取消。