当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] New-Event (Microsoft.PowerShell.Utility)

作者:精品下载站 日期:2024-12-14 02:05:16 浏览:14 分类:玩电脑

New-Event (Microsoft.PowerShell.Utility)


New-Event

模块 :Microsoft.PowerShell.Utility

创建一个新事件。

句法

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

指定包含事件选项的对象。

类型 :

PS对象[]

位置:

2

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-MessageData

指定与事件关联的附加数据。此参数的值出现在事件对象的 MessageData 属性中。

类型 :

PS对象

位置:

3

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-Sender

指定引发事件的对象。默认为 PowerShell 引擎。

类型 :

PS对象

位置:

1

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-SourceIdentifier

指定新事件的名称。该参数是必需的,并且在会话中必须是唯一的。

此参数的值出现在事件的 SourceIdentifier 属性中。

类型 :

String

位置:

0

默认值:

None

必需的:

True

接受管道输入:

False

接受通配符:

False

输入

您无法通过管道将对象传递到此 cmdlet。

输出

PSEventArgs

笔记

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

新的自定义事件、事件订阅和事件队列仅存在于当前会话中。如果关闭当前会话,事件队列将被丢弃,事件订阅也会被取消。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯