Get-Event

获取事件队列中的事件。

语法

Get-Event
   [[-SourceIdentifier] <String>]
   [<CommonParameters>]
Get-Event
   [-EventIdentifier] <Int32>
   [<CommonParameters>]

说明

Get-Event cmdlet 可获取当前会话的 PowerShell 事件队列中的事件。 可以获取所有事件,也可以使用 EventIdentifier 或 SourceIdentifier 参数指定事件。

当发生某个事件时,会将其添加到事件队列中。 事件队列包括已注册的事件、使用 New-Event cmdlet 创建的事件和 PowerShell 退出时引发的事件。 可以使用 Get-EventWait-Event 来获取事件。

此 cmdlet 不会从“事件查看器”日志获取事件。 若要获取这些事件,请使用 Get-WinEventGet-EventLog

示例

示例 1:获取所有事件

PS C:\> Get-Event

此命令将获取事件队列中的所有事件。

示例 2:按源标识符获取事件

PS C:\> Get-Event -SourceIdentifier "PowerShell.ProcessCreated"

此命令将获取 SourceIdentifier 属性的值为 PowerShell.ProcessCreated 的事件。

示例 3:基于事件的生成时间获取事件

PS C:\> $Events = Get-Event
PS C:\> $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      : PS C:\> 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:按标识符获取事件

PS C:\> Get-Event -EventIdentifier 2

此命令将获取事件标识符为 2 的事件。

参数

-EventIdentifier

指定此 cmdlet 可为其获取事件的事件标识符。

类型:Int32
别名:Id
Position:0
默认值:None
必需:True
接受管道输入:True
接受通配符:False

-SourceIdentifier

指定此 cmdlet 可为其获取事件的源标识符。 默认值为事件队列中的所有事件。 不允许使用通配符。

类型:String
Position:0
默认值:None
必需:False
接受管道输入:True
接受通配符:False

输入

None

不能通过管道将对象传递给此 cmdlet。

输出

PSEventArgs

此 cmdlet 为每个事件返回一个 PSEventArgs 对象。 若要查看此对象的说明,请键入 Get-Help Get-Event -Full,并查看帮助主题的“注释”部分。

备注

Linux 或 macOS 平台上没有可用的事件源。

事件、事件订阅和事件队列仅存在于当前会话中。 如果关闭当前会话,将丢弃事件队列并取消事件订阅。

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 参数的值中,$EventArgs 自动变量包含此值

  • SourceArgs。 原始事件签名的所有参数。 对于标准事件签名,$Args[0] 表示发件人,$Args[1] 表示 SourceEventArgs。 在 Action 参数的值中,$Args 自动变量包含此值

  • SourceIdentifier。 用于标识事件订阅的字符串。 在 Action 参数的值中,$Event 自动变量的 SourceIdentifier 属性包含此值

  • TimeGenerated。 一个 DateTime 对象,用于表示事件的生成时间。 在 Action 参数的值中,$Event 自动变量的 TimeGenerated 属性包含此值

  • MessageData。 与事件订阅关联的数据。 当用户注册事件时,将指定此数据。 在 Action 参数的值中,$Event 自动变量的 MessageData property 属性包含此值