New-Event
Erstellt ein neues Ereignis.
Syntax
New-Event
[-SourceIdentifier] <String>
[[-Sender] <PSObject>]
[[-EventArguments] <PSObject[]>]
[[-MessageData] <PSObject>]
[<CommonParameters>]
Beschreibung
Das Cmdlet New-Event
erstellt ein neues benutzerdefiniertes Ereignis.
Sie können benutzerdefinierte Ereignisse verwenden, um Benutzer über Statusänderungen in Ihrem Programm zu informieren, und alle Änderungen, die Ihr Programm erkennen kann, einschließlich Hardware- oder Systembedingungen, Anwendungsstatus, Datenträgerstatus, Netzwerkstatus oder Abschluss eines Hintergrundauftrags.
Benutzerdefinierte Ereignisse werden automatisch der Ereigniswarteschlange in Ihrer Sitzung hinzugefügt, wenn sie ausgelöst werden. Sie müssen sie nicht abonnieren. Wenn Sie jedoch ein Ereignis an die lokale Sitzung weiterleiten oder eine Aktion angeben möchten, die auf das Ereignis reagiert, verwenden Sie das cmdlet Register-EngineEvent
, um das benutzerdefinierte Ereignis zu abonnieren.
Wenn Sie ein benutzerdefiniertes Ereignis abonnieren, wird der Ereignisabonnent Zu Ihrer Sitzung hinzugefügt. Wenn Sie das Ereignisabonnement mithilfe des Cmdlets Unregister-Event
kündigen, werden der Ereignisabonnent und das benutzerdefinierte Ereignis aus der Sitzung gelöscht. Wenn Sie das benutzerdefinierte Ereignis nicht abonnieren, müssen Sie zum Löschen des Ereignisses die Programmbedingungen ändern oder die PowerShell-Sitzung schließen.
Beispiele
Beispiel 1: Erstellen eines neuen Ereignisses in der Ereigniswarteschlange
PS C:\> New-Event -SourceIdentifier Timer -Sender windows.timer -MessageData "Test"
Mit diesem Befehl wird ein neues Ereignis in der PowerShell-Ereigniswarteschlange erstellt. Es verwendet ein Windows.Timer--Objekt, um das Ereignis zu senden.
Beispiel 2: Auslösen eines Ereignisses als Reaktion auf ein anderes Ereignis
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)
}
}
Diese Beispielfunktion verwendet das Cmdlet New-Event
, um ein Ereignis als Reaktion auf ein anderes Ereignis auszuheben. Der Befehl verwendet das Cmdlet Register-ObjectEvent
, um das WMI-Ereignis (Windows Management Instrumentation) zu abonnieren, das beim Erstellen eines neuen Prozesses ausgelöst wird. Der Befehl verwendet den parameter Action des Cmdlets, um das cmdlet New-Event
aufzurufen, das das neue Ereignis erstellt.
Da die ereignisse, die New-Event
ausgelöst werden, automatisch der PowerShell-Ereigniswarteschlange hinzugefügt werden, müssen Sie sich nicht für dieses Ereignis registrieren.
Parameter
-EventArguments
Gibt ein Objekt an, das Optionen für das Ereignis enthält.
Typ: | PSObject[] |
Position: | 2 |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-MessageData
Gibt zusätzliche Daten an, die dem Ereignis zugeordnet sind. Der Wert dieses Parameters wird in der MessageData--Eigenschaft des Ereignisobjekts angezeigt.
Typ: | PSObject |
Position: | 3 |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Sender
Gibt das Objekt an, das das Ereignis auslöst. Der Standardwert ist das PowerShell-Modul.
Typ: | PSObject |
Position: | 1 |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-SourceIdentifier
Gibt einen Namen für das neue Ereignis an. Dieser Parameter ist erforderlich und muss in der Sitzung eindeutig sein.
Der Wert dieses Parameters wird in der SourceIdentifier Eigenschaft der Ereignisse angezeigt.
Typ: | String |
Position: | 0 |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
Eingaben
None
Sie können keine Objekte an dieses Cmdlet weiterleiten.
Ausgaben
Hinweise
Auf den Linux- oder macOS-Plattformen sind keine Ereignisquellen verfügbar.
Das neue benutzerdefinierte Ereignis, das Ereignisabonnement und die Ereigniswarteschlange sind nur in der aktuellen Sitzung vorhanden. Wenn Sie die aktuelle Sitzung schließen, wird die Ereigniswarteschlange verworfen, und das Ereignisabonnement wird abgebrochen.