New-Event
创建新事件。
语法
New-Event
[-SourceIdentifier] <String>
[[-Sender] <PSObject>]
[[-EventArguments] <PSObject[]>]
[[-MessageData] <PSObject>]
[<CommonParameters>]
说明
New-Event
cmdlet 创建新的自定义事件。
可以使用自定义事件通知用户有关程序中的状态更改以及程序可以检测到的任何更改,包括硬件或系统条件、应用程序状态、磁盘状态、网络状态或后台作业的完成。
每当引发自定义事件时,自定义事件都会自动添加到会话中的事件队列;无需订阅它们。 但是,如果要将事件转发到本地会话或指定响应事件的作,请使用 Register-EngineEvent
cmdlet 订阅自定义事件。
订阅自定义事件时,事件订阅者将添加到会话。 如果使用 Unregister-Event
cmdlet 取消事件订阅,则事件订阅服务器和自定义事件将从会话中删除。 如果不订阅自定义事件,若要删除该事件,则必须更改程序条件或关闭 PowerShell 会话。
示例
示例 1:在事件队列中创建新事件
PS C:\> New-Event -SourceIdentifier Timer -Sender Windows.Timer -MessageData "Test"
此命令在 PowerShell 事件队列中创建新事件。 它使用 Windows.Timer 对象发送事件。
示例 2:引发事件以响应另一个事件
PS C:\> function Enable-ProcessCreationEvent
{
$Query = New-Object System.Management.WqlEventQuery "__InstanceCreationEvent", (New-Object TimeSpan 0,0,1), "TargetInstance isa 'Win32_Process'"
$ProcessWatcher = New-Object System.Management.ManagementEventWatcher $Query
$Identifier = "WMI.ProcessCreated"
Register-ObjectEvent $ProcessWatcher "EventArrived" -SupportEvent $Identifier -Action
{
[void] (New-Event -SourceId "PowerShell.ProcessCreated" -Sender $args[0] -EventArguments $args[1].SourceEventArgs.NewEvent.TargetInstance)
}
}
此示例函数使用 New-Event
cmdlet 引发事件以响应另一个事件。 该命令使用 Register-ObjectEvent
cmdlet 订阅创建新进程时引发的 Windows Management Instrumentation (WMI) 事件。 该命令使用 cmdlet 的 Action 参数调用创建新事件的 New-Event
cmdlet。
由于 New-Event
引发的事件会自动添加到 PowerShell 事件队列中,因此无需注册该事件。
参数
-EventArguments
指定包含事件选项的对象。
类型: | PSObject[] |
Position: | 2 |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-MessageData
指定与事件关联的其他数据。 此参数的值显示在事件对象的 MessageData 属性中。
类型: | PSObject |
Position: | 3 |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Sender
指定引发事件的对象。 默认值为 PowerShell 引擎。
类型: | PSObject |
Position: | 1 |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-SourceIdentifier
指定新事件的名称。 此参数是必需的,并且必须在会话中是唯一的。
此参数的值显示在事件的 SourceIdentifier 属性中。
类型: | String |
Position: | 0 |
默认值: | None |
必需: | True |
接受管道输入: | False |
接受通配符: | False |
输入
None
不能通过管道将对象传递给此 cmdlet。
输出
备注
Linux 或 macOS 平台上没有可用的事件源。
新的自定义事件、事件订阅和事件队列仅存在于当前会话中。 如果关闭当前会话,则会丢弃事件队列,并取消事件订阅。