Get-EventSubscriber
Ruft die Ereignisabonnenten in der aktuellen Sitzung ab.
Syntax
Get-EventSubscriber
[[-SourceIdentifier] <String>]
[-Force]
[<CommonParameters>]
Get-EventSubscriber
[-SubscriptionId] <Int32>
[-Force]
[<CommonParameters>]
Beschreibung
Das Get-EventSubscriber
Cmdlet ruft die Ereignisabonnenten in der aktuellen Sitzung ab.
Wenn Sie ein Ereignis mithilfe eines Register-Event-Cmdlets abonnieren, wird der Windows PowerShell-Sitzung ein Ereignisabonnent hinzugefügt. Darüber hinaus werden die abonnierten Ereignisse der Ereigniswarteschlange hinzugefügt, sobald sie ausgelöst werden. Um ein Ereignisabonnement zu kündigen, löschen Sie den Ereignisabonnent mithilfe des Unregister-Event
Cmdlets.
Beispiele
Beispiel 1: Abrufen des Ereignisabonnents für ein Timerereignis
In diesem Beispiel wird ein Get-EventSubscriber
Befehl verwendet, um den Ereignisabonnent für ein Timerereignis abzurufen.
Der erste Befehl verwendet das New-Object
Cmdlet, um eine instance eines Timerobjekts zu erstellen. Das neue Timerobjekt wird in der $Timer
Variablen gespeichert.
Der zweite Befehl verwendet das Get-Member
Cmdlet, um die Ereignisse anzuzeigen, die für Timerobjekte verfügbar sind. Der Befehl verwendet den Type-Parameter des Cmdlets Get-Member
mit dem Wert Event.
$Timer = New-Object Timers.Timer
$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)
Register-ObjectEvent -InputObject $Timer -EventName Elapsed -SourceIdentifier Timer.Elapsed
Get-EventSubscriber
SubscriptionId : 4
SourceObject : System.Timers.Timer
EventName : Elapsed
SourceIdentifier : Timer.Elapsed
Action :
HandlerDelegate :
SupportEvent : False
ForwardEvent : False
Der dritte Befehl verwendet das Register-ObjectEvent
Cmdlet, um sich für das Elapsed-Ereignis für das Timerobjekt zu registrieren.
Der vierte Befehl verwendet das Get-EventSubscriber
Cmdlet, um den Ereignisabonnent für das Elapsed-Ereignis abzurufen.
Beispiel 2: Verwenden des dynamischen Moduls in PSEventJob in der Action-Eigenschaft des Ereignisabonnents
In diesem Beispiel wird gezeigt, wie Sie das dynamische Modul im PSEventJob-Objekt in der Action-Eigenschaft des Ereignisabonnents verwenden.
Der erste Befehl verwendet das New-Object
Cmdlet, um ein Timerobjekt zu erstellen. Der zweite Befehl legt das Intervall des Zeitgebers auf 500 (Millisekunden) fest.
$Timer = New-Object Timers.Timer
$Timer.Interval = 500
$params = @{
InputObject = $Timer
EventName = 'Elapsed'
SourceIdentifier = 'Timer.Random'
Action = { $Random = Get-Random -Min 0 -Max 100 }
}
Register-ObjectEvent @params
Id Name State HasMoreData Location Command
-- ---- ----- ----------- -------- -------
3 Timer.Random NotStarted False $Random = Get-Random ...
$Timer.Enabled = $True
$Subscriber = Get-EventSubscriber -SourceIdentifier Timer.Random
($Subscriber.action).gettype().fullname
System.Management.Automation.PSEventJob
$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 : {}
...
& $Subscriber.action.module {$Random}
Der dritte Befehl verwendet das Register-ObjectEvent
Cmdlet, um das Elapsed-Ereignis des Zeitgeberobjekts zu registrieren. Der Befehl enthält eine Aktion zur Behandlung des Ereignisses. Wenn das Zeitgeberintervall abläuft, wird ein Ereignis ausgelöst, und die Befehle in der Aktion werden ausgeführt. In diesem Fall generiert das Get-Random
Cmdlet eine Zufallszahl zwischen 0 und 100 und speichert sie in der $Random
Variablen. Der Quellbezeichner des Ereignisses ist Timer.Random.
Wenn Sie einen Action-Parameter in einem Register-ObjectEvent
Befehl verwenden, gibt der Befehl ein PSEventJob-Objekt zurück, das die Aktion darstellt.
Der vierte Befehl aktiviert den Zeitgeber.
Der fünfte Befehl verwendet das Get-EventSubscriber
Cmdlet, um den Ereignisabonnent des Timer.Random-Ereignisses abzurufen. Das Ereignisabonnentobjekt wird in der $Subscriber
Variablen gespeichert.
Der sechste Befehl zeigt, dass die Action-Eigenschaft des Ereignisabonnentobjekts ein PSEventJob-Objekt enthält. Tatsächlich enthält es dasselbe PSEventJob-Objekt , das vom Register-ObjectEvent
Befehl zurückgegeben wurde.
Der siebte Befehl verwendet das Format-List
Cmdlet, um alle Eigenschaften des PSEventJob-Objekts in der Action-Eigenschaft in einer Liste anzuzeigen. Das Ergebnis zeigt, dass das PSEventJob-Objekt über eine Module-Eigenschaft verfügt, die ein dynamisches Skriptmodul enthält, das die Aktion implementiert.
Die restlichen Befehle verwenden den Aufrufoperator (&
), um den Befehl im Modul aufzurufen und den Wert der variablen $Random anzuzeigen. Mit dem Aufrufoperator können Sie einen beliebigen Befehl in einem Modul aufrufen, einschließlich nicht exportierter Befehle. In diesem Fall zeigen die Befehle die Zufallszahl an, die bei Eintritt des Elapsed-Ereignisses generiert wird.
Weitere Informationen zu Modulen finden Sie unter about_Modules.
Parameter
-Force
Gibt an, dass dieses Cmdlet alle Ereignisabonnenten abruft, einschließlich Abonnenten für Ereignisse, die mithilfe des SupportEvent-Parameters von Register-ObjectEvent
, Register-WmiEvent
und Register-EngineEvent
ausgeblendet werden.
Type: | SwitchParameter |
Position: | 1 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SourceIdentifier
Gibt den Wert der SourceIdentifier-Eigenschaft an, der nur die Ereignisabonnenten abruft. Ruft standardmäßig Get-EventSubscriber
alle Ereignisabonnenten in der Sitzung ab. Platzhalter sind nicht zulässig. Bei diesem Parameter wird die Groß-/Kleinschreibung beachtet.
Type: | String |
Position: | 0 |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-SubscriptionId
Gibt den Abonnementbezeichner an, den dieses Cmdlet erhält. Ruft standardmäßig Get-EventSubscriber
alle Ereignisabonnenten in der Sitzung ab.
Type: | Int32 |
Aliases: | Id |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Eingaben
None
Eingaben können nicht an dieses Cmdlet weitergereicht werden.
Ausgaben
Get-EventSubscriber
gibt ein -Objekt zurück, das jeden Ereignisabonnent darstellt.
Hinweise
Das New-Event
Cmdlet, das ein benutzerdefiniertes Ereignis erstellt, generiert keinen Abonnenten. Daher findet das Get-EventSubscriber
Cmdlet kein Abonnentenobjekt für diese Ereignisse. Wenn Sie jedoch das Register-EngineEvent
Cmdlet verwenden, um ein benutzerdefiniertes Ereignis zu abonnieren (um das Ereignis weiterzuleiten oder eine Aktion anzugeben), Get-EventSubscriber
wird der Abonnent gefunden, Register-EngineEvent
der generiert.
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.