Поделиться через


New-Event

Создает новое событие.

Синтаксис

New-Event
   [-SourceIdentifier] <String>
   [[-Sender] <PSObject>]
   [[-EventArguments] <PSObject[]>]
   [[-MessageData] <PSObject>]
   [<CommonParameters>]

Описание

Командлет New-Event создает новое настраиваемое событие.

Пользовательские события позволяют уведомлять пользователей об изменениях состояния программы, а также о любых других изменениях, которые может обнаружить программа, включая изменения условий работы оборудования или системы, состояния приложений, состояния диска, состояния сети или завершение фонового задания.

Пользовательские события автоматически добавляются в очередь событий в сеансе в момент их возникновения; настраивать подписку на эти события не нужно. Однако если вы хотите перенаправить событие в локальный сеанс или указать действие для реагирования на событие, используйте Register-EngineEvent командлет для подписки на настраиваемое событие.

При создании подписки на пользовательское событие в сеанс добавляется подписчик на событие. Если отменить подписку на события с помощью командлета Unregister-Event , подписчик событий и настраиваемое событие удаляются из сеанса. Если вы не подписываетесь на настраиваемое событие, удалите событие, необходимо изменить условия программы или закрыть сеанс 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 командлет для создания события в ответ на другое событие. Команда использует Register-ObjectEvent командлет для подписки на событие инструментария управления Windows (WMI), которое возникает при создании нового процесса. Команда использует параметр Action командлета для вызова New-Event командлета, который создает новое событие.

Так как создаваемые события автоматически добавляются в очередь событий New-Event PowerShell, вам не нужно регистрировать это событие.

Параметры

-EventArguments

Указывает объект, содержащий параметры события.

Тип:PSObject[]
Position:2
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-MessageData

Указывает дополнительные данные, связанные с событием. Значение этого параметра отображается в свойстве MessageData объекта события.

Тип:PSObject
Position:3
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Sender

Указывает объект, который вызывает событие. По умолчанию используется подсистема PowerShell.

Тип:PSObject
Position:1
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-SourceIdentifier

Задает имя нового события. Этот параметр является обязательным и должен быть уникальным в сеансе.

Значение этого параметра отображается в свойстве SourceIdentifier событий.

Тип:String
Position:0
Default value:None
Обязательно:True
Принять входные данные конвейера:False
Принять подстановочные знаки:False

Входные данные

None

Невозможно передать объекты в этот командлет.

Выходные данные

PSEventArgs

Примечания

Новое пользовательское событие, подписка на событие и очередь событий существуют только в текущем сеансе. Если закрыть текущий сеанс, очередь событий удаляется, а подписка на событие отменяется.