创建新事件。
语法
New-Event [-SourceIdentifier] <string> [[-Sender] <psobject>] [[-EventArguments] <PSObject[]>] [[-MessageData] <psobject>] [<CommonParameters>]
说明
New-Event cmdlet 创建新自定义事件。
可以使用自定义事件通知用户您程序中的状态更改以及您的程序可以检测到的任何更改,包括硬件或系统状况、应用程序状态、磁盘状态、网络状态或后台作业的完成。
每次引发自定义事件时,它们都会自动添加到会话中的事件队列,您无需订阅这些事件。但是,如果希望将事件转发到本地会话或指定一个操作来响应该事件,请使用 Register-EngineEvent cmdlet 来订阅自定义事件。
订阅自定义事件时,会向会话中添加事件订阅程序。如果通过使用 Unregister-Event cmdlet 取消事件订阅,将从会话中删除事件订阅程序和自定义事件。如果不订阅自定义事件,若要删除事件,必须更改程序状况或关闭 Windows PowerShell 会话。
参数
-EventArguments <PSObject[]>
指定包含事件选项的对象。
是否为必需? |
false |
位置? |
3 |
默认值 |
无 |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-MessageData <psobject>
指定与事件关联的其他数据。此参数的值显示在事件对象的 MessageData 属性中。
是否为必需? |
false |
位置? |
4 |
默认值 |
无 |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-Sender <psobject>
指定引发事件的对象。默认值是 Windows PowerShell 引擎。
是否为必需? |
false |
位置? |
2 |
默认值 |
无 |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-SourceIdentifier <string>
指定新事件的名称。此参数是必需的,并且在会话中必须是唯一的。
此参数的值显示在事件的 SourceIdentifier 属性中。
是否为必需? |
true |
位置? |
1 |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
<CommonParameters>
此 cmdlet 支持通用参数:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。有关详细信息,请参阅 about_Commonparameters.
输入和输出
输入类型是指可通过管道传递给 cmdlet 的对象的类型。返回类型是指 Cmdlet 所返回对象的类型。
输入 |
None 不能通过管道将输入传递给此 cmdlet。 |
输出 |
System.Management.Automation.PSEventArgs |
说明
新自定义事件、事件订阅和事件队列仅存在于当前会话中。如果关闭当前会话,将丢弃事件队列并取消事件订阅。
示例 1
C:\PS>new-event -sourceidentifier Timer -sender windows.timer -messagedata "Test" 说明 ----------- 此命令在 Windows PowerShell 事件队列中创建一个新事件。它使用 Windows.Timer 对象来发送该事件。
示例 2
C:\PS>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 引发的事件将自动添加到 Windows PowerShell 事件队列,所以您不需要注册该事件。
另请参阅