Get-EventSubscriber

Ruft die Ereignisabonnenten in der aktuellen Sitzung ab.

Syntax

Get-EventSubscriber [-SubscriptionId] <int> [-Force] [<CommonParameters>]

Get-EventSubscriber [[-SourceIdentifier] <string>] [-Force] [<CommonParameters>]

Beschreibung

Mit dem Cmdlet "Get-EventSubscriber" werden die Ereignisabonnenten in der aktuellen Sitzung abgerufen.

Wenn Sie ein Ereignis mit dem Cmdlet "Register-Event" abonnieren, wird der Windows PowerShell-Sitzung ein Ereignisabonnent hinzugefügt, und die abonnierten Ereignisse werden der Ereigniswarteschlange hinzugefügt, sobald sie ausgelöst werden.

Um ein Ereignisabonnement zu stornieren, löschen Sie den Ereignisabonnenten mit dem Cmdlet "Unregister-Event".

Parameter

-Force

Ruft alle Ereignisabonnenten, einschließlich Abonnenten für versteckte Ereignisse, mit dem SupportEvent-Parameter von Register-ObjectEvent, Register-WmiEvent und Register-EngineEvent ab.

 

Erforderlich?

false

Position?

2

Standardwert

Pipelineeingaben akzeptieren?

false

Platzhalterzeichen akzeptieren?

false

-SourceIdentifier <string>

Ruft nur die Ereignisabonnenten mit dem angegebenen SourceIdentifier-Eigenschaftenwert ab. Standardmäßig werden mit Get-EventSubscriber alle Ereignisabonnenten in der Sitzung abgerufen. Platzhalter sind nicht zulässig. Bei diesem Parameter wird die Groß-/Kleinschreibung berücksichtigt.

 

Erforderlich?

false

Position?

1

Standardwert

Alle Ereignisabonnenten

Pipelineeingaben akzeptieren?

true (ByPropertyName)

Platzhalterzeichen akzeptieren?

false

-SubscriptionId <int>

Ruft nur den angegebenen Abonnementbezeichner ab. Standardmäßig werden mit Get-EventSubscriber alle Ereignisabonnenten in der Sitzung abgerufen.

 

Erforderlich?

true

Position?

1

Standardwert

Keiner

Pipelineeingaben akzeptieren?

true (ByPropertyName)

Platzhalterzeichen akzeptieren?

false

<CommonParameters>

Dieses Cmdlet unterstützt die folgenden allgemeinen Parameter: -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer und -OutVariable. Weitere Informationen finden Sie unter about_Commonparameters.

Eingaben und Ausgaben

Der Eingabetyp ist der Typ der Objekte, die über die Pipeline an das Cmdlet übergeben werden können. Der Rückgabetyp ist der Typ der Objekte, die das Cmdlet zurückgibt.

 

Eingaben

Keiner

Eingaben können nicht über die Pipeline an dieses Cmdlet übergeben werden.

Ausgaben

System.Management.Automation.PSEventSubscriber

Get-EventSubscriber gibt ein Objekt zurück, das die einzelnen Ereignisabonnenten darstellt.

Hinweise

Das Cmdlet "New-Event", das ein benutzerdefiniertes Ereignis erstellt, generiert keinen Abonnenten. Deshalb sucht das Cmdlet "Get-EventSubscriber" kein Abonnentenobjekt für diese Ereignisse. Wenn Sie jedoch ein benutzerdefiniertes Ereignis mit dem Cmdlet "Register-EngineEvent" abonnieren (um das Ereignis weiterzuleiten oder eine Aktion anzugeben), wird mit Get-EventSubscriber der Abonnent gesucht, der von Register-EngineEvent generiert wird.

Ereignisse, Ereignisabonnements 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.

Beispiel 1

C:\PS>$timer = New-Object Timers.Timer 

C:\PS> $timer | Get-Member -Type Event 

C:\PS> Register-ObjectEvent -inputObject $timer -EventName Elapsed -SourceIdentifier Timer.Elapsed

C:\PS> Get-EventSubscriber

C:\PS> $timer = New-Object Timers.Timer 

C:\PS> $timer | Get-Member -Type Event 

   TypeName: System.Timers.Timer 

Name     MemberType Definition 
----     ---------- ---------- 
Disposed Event      System.EventHandler Disposed(System.Object, System.EventArgs) 
Elapsed  Event      System.Timers.ElapsedEventHandler Elapsed(System.Object, System.Timers.ElapsedEventArgs)

C:\PS> Register-ObjectEvent -InputObject $timer -EventName Elapsed -SourceIdentifier Timer.Elapsed

C:\PS> Get-EventSubscriber 

SubscriptionId   : 4 
SourceObject     : System.Timers.Timer 
EventName        : Elapsed 
SourceIdentifier : Timer.Elapsed 
Action           : 
HandlerDelegate  : 
SupportEvent     : False 
ForwardEvent     : False

Beschreibung
-----------
In diesem Beispiel wird der Befehl "Get-EventSubscriber" verwendet, um den Ereignisabonnenten für ein Zeitgeberereignis abzurufen. 

Im ersten Befehl wird das Cmdlet "New-Object" verwendet, um eine Instanz eines Zeitgeberobjekts zu erstellen. Das neue Zeitgeberobjekt wird in der Variablen "$timer" gespeichert.

Im zweiten Befehl wird das Cmdlet "Get-Member" verwendet, um die Ereignisse anzuzeigen, die für Zeitgeberobjekte verfügbar sind. Der Befehl verwendet den Type-Parameter des Cmdlets "Get-Member" mit dem Wert "Event".

Im dritten Befehl wird das Cmdlet "Register-ObjectEvent" verwendet, um das Elapsed-Ereignis des Zeitgeberobjekts zu registrieren.

Im vierten Befehl wird mit dem Cmdlet "Get-EventSubscriber" der Ereignisabonnent für das Elapsed-Ereignis abgerufen.







Beispiel 2

C:\PS>$timer  = New-Object Timers.Timer

C:\PS> $timer.Interval = 500

C:\PS> Register-ObjectEvent -inputObject $timer -eventName Elapsed -sourceIdentifier Timer.Random -Action { $random = Get-Random -Min 0 -Max 100 }

Id  Name           State      HasMoreData  Location  Command
--  ----           -----      -----------  --------  -------
3   Timer.Random   NotStarted False                  $random = Get-Random ...


C:\PS> $timer.Enabled = $true

C:\PS> $subscriber = Get-EventSubcriber -sourceIdentifer Timer.Random

C:\PS> ($subscriber.action).gettype().fullname
PSEventJob

C:\PS> $subscriber.action | format-list -property *

State         : Running
Module        : __DynamicModule_6b5cbe82-d634-41d1-ae5e-ad7fe8d57fe0
StatusMessage :
HasMoreData   : True
Location      :
Command       : $random = Get-Random -Min 0 -Max 100
JobStateInfo  : Running
Finished      : System.Threading.ManualResetEvent
InstanceId    : 88944290-133d-4b44-8752-f901bd8012e2
Id            : 1
Name          : Timer.Random
ChildJobs     : {}
...

C:\PS> & $subscriber.action.module {$random}
96

C:\PS> & $subscriber.action.module {$random}
23

Beschreibung
-----------
In diesem Beispiel wird gezeigt, wie das dynamische Modul im PSEventJob-Objekt in der Action-Eigenschaft des Ereignisabonnenten verwendet wird.

Der erste Befehl erstellt mit dem Cmdlet "New-Object" ein Zeitgeberobjekt. Mit dem zweiten Befehl wird das Intervall des Zeitgebers auf 500 (Millisekunden) festgelegt.

Mit dem dritten Befehl wird das Cmdlet "Register-ObjectEvent" verwendet, um das Elapsed-Ereignis des Zeitgeberobjekts zu registrieren. Der Befehl schließt eine Aktion ein, die das Ereignis behandelt. Jedes Mal, wenn das Zeitgeberintervall abläuft, wird ein Ereignis ausgelöst und die Befehle in der Aktion ausgeführt. In diesem Fall generiert das Cmdlet "Get-Random" eine Zufallszahl zwischen 0 und 100 und speichert sie in der Variablen "$random". Der Quellbezeichner des Ereignisses lautet "Timer.Random".

Wenn Sie in einem Register-ObjectEvent-Befehl einen Action-Parameter verwenden, gibt der Befehl ein PSEventJob-Objekt zurück, das die Aktion darstellt. 

Mit dem vierten Befehl wird der Zeitgeber aktiviert.

Mit dem fünften Befehl wird das Cmdlet "Get-EventSubscriber" verwendet, um den Ereignisabonnenten des Timer.Random-Ereignisses abzurufen. Das Ereignisabonnentenobjekt wird in der Variablen "$subscriber" gespeichert.

Der sechste Befehl zeigt, dass die Action-Eigenschaft des Ereignisabonnentenobjekts ein PSEventJob-Objekt enthält. Hierbei handelt es sich tatsächlich um das gleiche PSEventJob-Objekt, das vom Befehl "Register-ObjectEvent" zurückgegeben wurde.

Mit dem siebten Befehl wird das Cmdlet "Format-List" verwendet, um alle Eigenschaften des PSEventJob-Objekts in der Action-Eigenschaft in einer Liste anzuzeigen. Das Ergebnis veranschaulicht, dass das PSEventJob-Objekt über eine Module-Eigenschaft verfügt, die ein dynamisches Skriptmodul enthält, das die Aktion implementiert.

In den verbleibenden Befehlen wird der Aufrufoperator (&) verwendet, um den Befehl im Modul aufzurufen und den Wert der Variablen "$random" anzuzeigen. Sie können den Aufrufoperator verwenden, um einen beliebigen Befehl im Modul aufzurufen, einschließlich nicht exportierter Befehle. In diesem Fall zeigen die Befehle die Zufallsnummer an, die bei Auftreten des Elapsed-Ereignisses generiert wird.

Weitere Informationen zu Modulen finden Sie unter "about_Modules".







Siehe auch

Anzeigen: