Get-EventSubscriber
Ruft die Ereignisabonnenten in der aktuellen Sitzung ab.
Syntax
BySource (Standard)
Get-EventSubscriber
[[-SourceIdentifier] <String>]
[-Force]
[<CommonParameters>]
ById
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-Ereignis-Cmdlets abonnieren, wird ihrem Windows PowerShell-Sitzung ein Ereignisabonnent hinzugefügt, und die Ereignisse, die Sie abonniert haben, werden ihrer Ereigniswarteschlange hinzugefügt, sobald sie ausgelöst werden. Um ein Ereignisabonnement abzubrechen, 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 Instanz 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 Get-Member Cmdlets 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 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 das dynamische Modul im PSEventJob-Objekt in der Action-Eigenschaft des Ereignisabonnents verwendet wird.
Der erste Befehl verwendet das New-Object Cmdlet zum Erstellen eines Timerobjekts. Der zweite Befehl legt das Intervall des Timers 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 Timerobjekts zu registrieren. Der Befehl enthält eine Aktion, die das Ereignis behandelt. Wenn das Zeitgeberintervall verstrichen ist, 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 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 Timer.
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 der Register-ObjectEvent Befehl zurückgegeben hat.
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 an, dass das PSEventJob-Objekt eine Module-Eigenschaft aufweist, die ein dynamisches Skriptmodul enthält, das die Aktion implementiert.
Die verbleibenden Befehle verwenden den Aufrufoperator (&), um den Befehl im Modul aufzurufen und den Wert der $Random Variablen anzuzeigen. Sie können den Aufrufoperator verwenden, um einen beliebigen Befehl in einem Modul aufzurufen, einschließlich befehle, die nicht exportiert werden. In diesem Fall zeigen die Befehle die Zufallszahl an, die generiert wird, wenn das Ereignis verstrichen ist.
Weitere Informationen zu Modulen finden Sie unter about_Modules.
Beispiel 3: Abrufen ausgeblendeter Ereignisabonnenten
In diesem Beispiel wird ein Ereignisabonnent für das PowerShell.Exiting-Ereignis registriert. Das Abonnement wird mit dem Parameter "SupportEvent " registriert, der den Ereignisabonnent aus der Standardausgabe des Get-EventSubscriber Cmdlets ausblendet. Sie müssen den Parameter Force verwenden, um alle Ereignisabonnenten abzurufen, einschließlich ausgeblendeter Abonnenten.
Register-EngineEvent -SourceIdentifier PowerShell.Exiting -SupportEvent -Action {
Get-History | Export-Clixml D:\temp\history.clixml
}
Get-EventSubscriber # No output - must use -Force
Get-EventSubscriber -Force
SubscriptionId : 1
SourceObject :
EventName :
SourceIdentifier : PowerShell.Exiting
Action : System.Management.Automation.PSEventJob
HandlerDelegate :
SupportEvent : True
ForwardEvent : False
Parameter
-Force
Gibt an, dass dieses Cmdlet alle Ereignisabonnenten abruft, einschließlich Abonnenten für Ereignisse, die mithilfe des SupportEvent-Parameters von Register-ObjectEvent, und Register-WmiEventRegister-EngineEvent.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | 1 |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-SourceIdentifier
Gibt den SourceIdentifier-Eigenschaftswert an, der nur die Ereignisabonnenten abruft. Ruft standardmäßig Get-EventSubscriber alle Ereignisabonnenten in der Sitzung ab. Wildcards sind nicht zulässig. Bei diesem Parameter wird die Groß-/Kleinschreibung beachtet.
Parametereigenschaften
| Typ: | String |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
BySource
| Position: | 0 |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | True |
| Wert aus verbleibenden Argumenten: | False |
-SubscriptionId
Gibt den Abonnementbezeichner an, den dieses Cmdlet abruft. Ruft standardmäßig Get-EventSubscriber alle Ereignisabonnenten in der Sitzung ab.
Parametereigenschaften
| Typ: | Int32 |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
| Aliase: | ID |
Parametersätze
ById
| Position: | 0 |
| Obligatorisch.: | True |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | True |
| Wert aus verbleibenden Argumenten: | False |
CommonParameters
Dieses Cmdlet unterstützt die allgemeinen Parameter -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction und -WarningVariable. Weitere Informationen findest du unter about_CommonParameters.
Eingaben
None
Sie können keine Objekte an dieses Cmdlet weiterleiten.
Ausgaben
PSEventSubscriber
Dieses Cmdlet gibt ein PSEventSubscriber-Objekt für jeden Ereignisabonnent zurück.
Hinweise
Das New-Event Cmdlet, das ein benutzerdefiniertes Ereignis erstellt, generiert keinen Abonnent. Daher findet das Get-EventSubscriber Cmdlet kein Abonnentobjekt 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 generierte Abonnent Register-EngineEvent gefunden.
Ereignisse, Ereignisabonnements und die Ereigniswarteschlange sind nur in der aktuellen Sitzung verfügbar. Wenn Sie die aktuelle Sitzung schließen, wird die Ereigniswarteschlange verworfen, und das Ereignisabonnement wird abgebrochen.