Get-Event
获取事件队列中的事件。
语法
Get-Event [-EventIdentifier] <int> [<CommonParameters>]
Get-Event [[-SourceIdentifier] <string>] [<CommonParameters>]
说明
Get-Event cmdlet 获取当前会话的 Windows PowerShell 事件队列中的事件。您可以获取所有事件,也可以使用 EventIdentifier 或 SourceIdentifier 参数指定事件。
当发生某事件时,会将其添加到事件队列中。事件队列包括已注册的事件、使用 New-Event cmdlet 创建的事件,以及当 Windows PowerShell 退出时引发的事件。可使用 Get-Event 或 Wait-Event 来获取事件。
此 cmdlet 不会从“事件查看器”日志中获取事件。要获取这些事件,请使用 Get-WinEvent 或 Get-EventLog。
参数
-EventIdentifier <int>
仅获取具有指定事件标识符的事件。
是否为必需? |
true |
位置? |
1 |
默认值 |
|
是否接受管道输入? |
true (ByPropertyName) |
是否接受通配符? |
false |
-SourceIdentifier <string>
仅获取具有指定源标识符的事件。默认值为事件队列中的所有事件。不允许使用通配符。
是否为必需? |
false |
位置? |
1 |
默认值 |
所有事件 |
是否接受管道输入? |
true (ByPropertyName) |
是否接受通配符? |
false |
<CommonParameters>
此 cmdlet 支持通用参数:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。有关详细信息,请参阅 about_Commonparameters.
输入和输出
输入类型是指可通过管道传递给 cmdlet 的对象的类型。返回类型是指 Cmdlet 所返回对象的类型。
输入 |
无 不能通过管道将输入传递给此 cmdlet。 |
输出 |
System.Management.Automation.PSEventArgs Get-Event 为每个事件返回一个 PSEventArgs 对象。若要查看此对象的说明,请键入“get-help get-event -full”,然后查看帮助主题的“注释”部分。 |
说明
事件、事件订阅和事件队列仅存在于当前会话中。如果关闭当前会话,将丢弃事件队列并取消事件订阅。
Get-Event cmdlet 返回具有以下属性的 PSEventArgs 对象 (System.Management.Automation.PSEventArgs)。
-- ComputerName:发生该事件的计算机的名称。只有在从远程计算机转发该事件时,才填充此属性值。
-- RunspaceId:一个 GUID,用于唯一标识该事件发生时所在的会话。只有在从远程计算机转发该事件时,才填充此属性值。
-- EventIdentifier:一个整数 (Int32),用于唯一标识当前会话中的事件通知。
-- Sender:生成事件的对象。在 Action 参数的值中,$Sender 自动变量包含发送方对象。
-- SourceEventArgs:从 EventArgs 派生的第一个参数(如果存在)。例如,在签名形式为“Object sender, Timers.ElapsedEventArgs e”的 Timer Elapsed 事件中,SourceEventArgs 属性包含 Timers.ElapsedEventArgs。在 Action 参数的值中,$SourceEventArgs 自动变量包含此值。
-- SourceArgs:原始事件签名的所有参数。对于标准事件签名,$args[0] 表示发送方,$args[1] 表示 SourceEventArgs。在 Action 参数的值中,$SourceArgs 自动变量包含此值。
-- SourceIdentifier:用于标识事件订阅的字符串。在 Action 参数的值中,$Event 自动变量的 SourceIdentifier 属性包含此值。
-- TimeGenerated:一个 DateTime 对象,表示事件的生成时间。在 Action 参数的值中,$Event 自动变量的 TimeGenerated 属性包含此值。
--MessageData:与事件订阅关联的数据。用户在注册事件时指定此数据。在 Action 参数的值中,$Event 自动变量的 MessageData 属性包含此值。
示例 1
C:\PS>get-event
说明
-----------
此命令获取事件队列中的所有事件。
示例 2
C:\PS>get-event -sourceIdentifier "PowerShell.ProcessCreated"
说明
-----------
此命令获取其中所含 SourceIdentifier 属性的值为“PowerShell.ProcessCreated”的事件。
示例 3
C:\PS>$events = get-event
C:\PS> $events[0] | format-list -property *
ComputerName :
RunspaceId : c2153740-256d-46c0-a57c-b805917d1b7b
EventIdentifier : 1
Sender : System.Management.ManagementEventWatcher
SourceEventArgs : System.Management.EventArrivedEventArgs
SourceArgs : {System.Management.ManagementEventWatcher, System.Management.EventArrivedEventArgs}
SourceIdentifier : ProcessStarted
TimeGenerated : 11/13/2008 12:09:32 PM
MessageData :
C:\PS> get-event | where {$_.TimeGenerated -ge "11/13/2008 12:15:00 PM"}
ComputerName :
RunspaceId : c2153740-256d-46c0-a57c-b8059325d1a0
EventIdentifier : 1
Sender : System.Management.ManagementEventWatcher
SourceEventArgs : System.Management.EventArrivedEventArgs
SourceArgs : {System.Management.ManagementEventWatcher, System.Management.EventArrivedEventArgs}
SourceIdentifier : ProcessStarted
TimeGenerated : 11/13/2008 12:15:00 PM
MessageData :
说明
-----------
此示例演示了如何使用属性而不是 SourceIdentifier 来获取事件。
第一条命令获取事件队列中的所有事件并将其保存在 $events 变量中。
第二条命令使用数组表示法来获取 $events 变量的数组中的第一个(索引为 0)事件。该命令使用管道运算符 (|) 将事件发送至 Format-List 命令,后者显示列表中事件的所有属性。这样,您便可以检查事件对象的属性。
第三条命令演示了如何基于事件的生成时间,使用 Where-Object cmdlet 来
获取事件。
示例 4
C:\PS>get-event -eventIdentifier 2
说明
-----------
此命令获取事件标识符为 2 的事件。
另请参阅
概念
Register-ObjectEvent
Register-EngineEvent
Register-WmiEvent
Unregister-Event
New-Event
Remove-Event
Wait-Event