Get-EventSubscriber
Haalt de gebeurtenisabonnees op in de huidige sessie.
Syntaxis
Get-EventSubscriber
[[-SourceIdentifier] <String>]
[-Force]
[<CommonParameters>]
Get-EventSubscriber
[-SubscriptionId] <Int32>
[-Force]
[<CommonParameters>]
Description
De Get-EventSubscriber
-cmdlet haalt de gebeurtenisabonnees op in de huidige sessie.
Wanneer u zich abonneert op een gebeurtenis met behulp van een cmdlet Gebeurtenis registreren, wordt een gebeurtenisabonnee toegevoegd aan uw Windows PowerShell-sessie en worden de gebeurtenissen waaraan u zich hebt geabonneerd, toegevoegd aan uw gebeurteniswachtrij wanneer ze worden gegenereerd. Als u een gebeurtenisabonnement wilt annuleren, verwijdert u de gebeurtenisabonnee met behulp van de cmdlet Unregister-Event
.
Voorbeelden
Voorbeeld 1: De gebeurtenisabonnee voor een timer-gebeurtenis ophalen
In dit voorbeeld wordt een Get-EventSubscriber
-opdracht gebruikt om de gebeurtenisabonnee voor een timer-gebeurtenis op te halen.
De eerste opdracht maakt gebruik van de cmdlet New-Object
om een exemplaar van een timerobject te maken. Het nieuwe timerobject wordt opgeslagen in de variabele $Timer
.
De tweede opdracht gebruikt de Get-Member
cmdlet om de gebeurtenissen weer te geven die beschikbaar zijn voor timerobjecten. De opdracht maakt gebruik van de parameter Type van de Get-Member
cmdlet met de waarde 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)
$params = @{
InputObject = $Timer
EventName = 'Elapsed'
SourceIdentifier = 'Timer.Elapsed'
}
Register-ObjectEvent @params
Get-EventSubscriber
SubscriptionId : 4
SourceObject : System.Timers.Timer
EventName : Elapsed
SourceIdentifier : Timer.Elapsed
Action :
HandlerDelegate :
SupportEvent : False
ForwardEvent : False
De derde opdracht maakt gebruik van de Register-ObjectEvent
cmdlet om u te registreren voor de verstreken gebeurtenis in het timerobject.
De vierde opdracht maakt gebruik van de Get-EventSubscriber
cmdlet om de gebeurtenisabonnee op te halen voor de verstreken gebeurtenis.
Voorbeeld 2: Gebruik de dynamische module in PSEventJob in de eigenschap Actie van de gebeurtenisabonnee
In dit voorbeeld ziet u hoe u de dynamische module gebruikt in de PSEventJob-object in de eigenschap Action van de gebeurtenisabonnee.
De eerste opdracht maakt gebruik van de cmdlet New-Object
om een timerobject te maken. Met de tweede opdracht wordt het interval van de timer ingesteld op 500 (milliseconden).
$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}
De derde opdracht gebruikt de Register-ObjectEvent
cmdlet om de verstreken gebeurtenis van het timerobject te registreren. De opdracht bevat een actie waarmee de gebeurtenis wordt verwerkt. Wanneer het timerinterval is verstreken, wordt er een gebeurtenis gegenereerd en worden de opdrachten in de actieuitvoering uitgevoerd. In dit geval genereert de Get-Random
cmdlet een willekeurig getal tussen 0 en 100 en slaat deze op in de $Random
variabele. De bron-id van de gebeurtenis is Timer.Random.
Wanneer u een parameter Action in een Register-ObjectEvent
opdracht gebruikt, retourneert de opdracht een PSEventJob object dat de actie vertegenwoordigt.
Met de vierde opdracht wordt de timer ingeschakeld.
De vijfde opdracht maakt gebruik van de Get-EventSubscriber
cmdlet om de gebeurtenisabonnee op te halen van de gebeurtenis Timer.Random gebeurtenis. Het object gebeurtenisabonnee wordt opgeslagen in de $Subscriber
variabele.
De zesde opdracht laat zien dat de eigenschap Action van het object gebeurtenisabonnee een PSEventJob-object bevat. In feite bevat het dezelfde PSEventJob-object dat de Register-ObjectEvent
opdracht heeft geretourneerd.
De zevende opdracht gebruikt de Format-List
cmdlet om alle eigenschappen van de PSEventJob object weer te geven in de eigenschap Action in een lijst. Het resultaat laat zien dat het PSEventJob-object een moduleeigenschap bevat die een dynamische scriptmodule bevat waarmee de actie wordt geïmplementeerd.
De resterende opdrachten gebruiken de aanroepoperator (&
) om de opdracht in de module aan te roepen en de waarde van de $Random variabele weer te geven. U kunt de aanroepoperator gebruiken om een opdracht in een module aan te roepen, inclusief opdrachten die niet worden geëxporteerd. In dit geval geven de opdrachten het willekeurige getal weer dat wordt gegenereerd wanneer de verstreken gebeurtenis plaatsvindt.
Zie about_Modulesvoor meer informatie over modules.
Voorbeeld 3: Verborgen gebeurtenisabonnees ophalen
In dit voorbeeld wordt een gebeurtenisabonnee geregistreerd voor de PowerShell.Exiting gebeurtenis. Het abonnement is geregistreerd met behulp van de parameter SupportEvent, waardoor de gebeurtenisabonnee wordt verborgen in de standaarduitvoer van de Get-EventSubscriber
-cmdlet. U moet de parameter Forceren gebruiken om alle gebeurtenisabonnees, inclusief verborgen abonnees, op te halen.
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
Parameters
-Force
Geeft aan dat deze cmdlet alle gebeurtenisabonnees ophaalt, inclusief abonnees voor gebeurtenissen die zijn verborgen met behulp van de parameter SupportEvent-parameter van Register-ObjectEvent
, Register-WmiEvent
en Register-EngineEvent
.
Type: | SwitchParameter |
Position: | 1 |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-SourceIdentifier
Hiermee geeft u de SourceIdentifier eigenschapswaarde op die alleen de gebeurtenisabonnees ontvangt. Standaard krijgt Get-EventSubscriber
alle gebeurtenisabonnees in de sessie. Jokertekens zijn niet toegestaan. Deze parameter is hoofdlettergevoelig.
Type: | String |
Position: | 0 |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | True |
Jokertekens accepteren: | False |
-SubscriptionId
Hiermee geeft u de abonnements-id op die door deze cmdlet wordt opgehaald. Standaard krijgt Get-EventSubscriber
alle gebeurtenisabonnees in de sessie.
Type: | Int32 |
Aliassen: | Id |
Position: | 0 |
Default value: | None |
Vereist: | True |
Pijplijninvoer accepteren: | True |
Jokertekens accepteren: | False |
Invoerwaarden
None
U kunt geen objecten doorsluisen naar deze cmdlet.
Uitvoerwaarden
Deze cmdlet retourneert een PSEventSubscriber--object voor elke gebeurtenisabonnee.
Notities
De New-Event
-cmdlet, waarmee een aangepaste gebeurtenis wordt gemaakt, genereert geen abonnee. Daarom vindt de Get-EventSubscriber
-cmdlet geen abonneeobject voor deze gebeurtenissen. Als u echter de cmdlet Register-EngineEvent
gebruikt om u te abonneren op een aangepaste gebeurtenis (om de gebeurtenis door te sturen of om een actie op te geven), vindt Get-EventSubscriber
de abonnee die Register-EngineEvent
genereert.
Gebeurtenissen, gebeurtenisabonnementen en de gebeurteniswachtrij bestaan alleen in de huidige sessie. Als u de huidige sessie sluit, wordt de gebeurteniswachtrij verwijderd en wordt het gebeurtenisabonnement geannuleerd.