Udostępnij za pośrednictwem


New-Event

Tworzy nowe zdarzenie.

Składnia

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

Opis

Polecenie New-Event cmdlet tworzy nowe zdarzenie niestandardowe.

Zdarzenia niestandardowe umożliwiają powiadamianie użytkowników o zmianach stanu w programie i wszelkich zmianach, które program może wykryć, w tym warunki sprzętowe lub systemowe, stan aplikacji, stan dysku, stan sieci lub ukończenie zadania w tle.

Zdarzenia niestandardowe są automatycznie dodawane do kolejki zdarzeń w sesji za każdym razem, gdy są wywoływane; nie trzeba ich subskrybować. Jeśli jednak chcesz przekazać zdarzenie do sesji lokalnej lub określić akcję, aby odpowiedzieć na zdarzenie, użyj Register-EngineEvent polecenia cmdlet , aby zasubskrybować zdarzenie niestandardowe.

Po zasubskrybowaniu zdarzenia niestandardowego subskrybent zdarzenia zostanie dodany do sesji. Jeśli anulujesz subskrypcję zdarzeń przy użyciu Unregister-Event polecenia cmdlet , subskrybent zdarzenia i zdarzenie niestandardowe zostaną usunięte z sesji. Jeśli nie subskrybujesz zdarzenia niestandardowego, aby usunąć zdarzenie, musisz zmienić warunki programu lub zamknąć sesję programu PowerShell.

Przykłady

Przykład 1: Tworzenie nowego zdarzenia w kolejce zdarzeń

PS C:\> New-Event -SourceIdentifier Timer -Sender windows.timer -MessageData "Test"

To polecenie tworzy nowe zdarzenie w kolejce zdarzeń programu PowerShell. Do wysłania zdarzenia jest używany obiekt Windows.Timer .

Przykład 2. Zgłaszanie zdarzenia w odpowiedzi na inne zdarzenie

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)
   }
}

Ta przykładowa funkcja używa New-Event polecenia cmdlet do zgłaszania zdarzenia w odpowiedzi na inne zdarzenie. Polecenie używa Register-ObjectEvent polecenia cmdlet do subskrybowania zdarzenia Instrumentacja zarządzania Windows (WMI), które jest zgłaszane podczas tworzenia nowego procesu. Polecenie używa parametru Action polecenia cmdlet do wywołania New-Event polecenia cmdlet, które tworzy nowe zdarzenie.

Ponieważ zdarzenia, które zgłaszają, New-Event są automatycznie dodawane do kolejki zdarzeń programu PowerShell, nie trzeba rejestrować się na potrzeby tego zdarzenia.

Parametry

-EventArguments

Określa obiekt zawierający opcje zdarzenia.

Typ:PSObject[]
Position:2
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-MessageData

Określa dodatkowe dane skojarzone ze zdarzeniem. Wartość tego parametru jest wyświetlana we właściwości MessageData obiektu zdarzenia.

Typ:PSObject
Position:3
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-Sender

Określa obiekt, który zgłasza zdarzenie. Wartość domyślna to aparat programu PowerShell.

Typ:PSObject
Position:1
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-SourceIdentifier

Określa nazwę nowego zdarzenia. Ten parametr jest wymagany i musi być unikatowy w sesji.

Wartość tego parametru jest wyświetlana we właściwości SourceIdentifier zdarzeń.

Typ:String
Position:0
Domyślna wartość:None
Wymagane:True
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

Dane wejściowe

None

Nie można potokować obiektów do tego polecenia cmdlet.

Dane wyjściowe

PSEventArgs

Uwagi

Brak źródeł zdarzeń dostępnych na platformach Linux lub macOS.

Nowe zdarzenie niestandardowe, subskrypcja zdarzeń i kolejka zdarzeń istnieją tylko w bieżącej sesji. Jeśli zamkniesz bieżącą sesję, kolejka zdarzeń zostanie odrzucona i subskrypcja zdarzeń zostanie anulowana.