Get-EventSubscriber
Hämtar händelseprenumeranterna i den aktuella sessionen.
Syntax
Get-EventSubscriber
[[-SourceIdentifier] <String>]
[-Force]
[<CommonParameters>]
Get-EventSubscriber
[-SubscriptionId] <Int32>
[-Force]
[<CommonParameters>]
Description
Cmdleten Get-EventSubscriber hämtar händelseprenumeranterna i den aktuella sessionen.
När du prenumererar på en händelse med hjälp av en registerhändelse-cmdlet läggs en händelseprenumerant till i PowerShell-sessionen och de händelser som du prenumererar på läggs till i händelsekön när de aktiveras. Om du vill avbryta en händelseprenumeration tar du bort händelseprenumeranten med hjälp av cmdleten Unregister-Event.
Exempel
Exempel 1: Hämta händelseprenumeranten för en timerhändelse
PS C:\> $Timer = New-Object Timers.Timer
PS C:\> $Timer | Get-Member -Type Event
PS C:\> Register-ObjectEvent -InputObject $Timer -EventName Elapsed -SourceIdentifier Timer.Elapsed
PS C:\> Get-EventSubscriber
PS C:\> $Timer = New-Object Timers.Timer
PS C:\> $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) PS C:\> Register-ObjectEvent -InputObject $Timer -EventName Elapsed -SourceIdentifier Timer.Elapsed
PS C:\> Get-EventSubscriber
SubscriptionId : 4
SourceObject : System.Timers.Timer
EventName : Elapsed
SourceIdentifier : Timer.Elapsed
Action :
HandlerDelegate :
SupportEvent : False
ForwardEvent : False
I det här exemplet används ett Get-EventSubscriber-kommando för att hämta händelseprenumeranten för en timerhändelse.
Det första kommandot använder cmdleten New-Object för att skapa en instans av ett timerobjekt. Det sparar det nya timerobjektet i variabeln $Timer.
Det andra kommandot använder cmdleten Get-Member för att visa de händelser som är tillgängliga för tidsinställda objekt. Kommandot använder parametern Type för cmdleten Get-Member med värdet Händelse.
Det tredje kommandot använder cmdleten Register-ObjectEvent för att registrera sig för händelsen Elapsed på timerobjektet.
Det fjärde kommandot använder cmdleten Get-EventSubscriber för att hämta händelseprenumeranten för händelsen Elapsed.
Exempel 2: Använd den dynamiska modulen i PSEventJob i händelseprenumerantens åtgärdsegenskap
PS C:\> $Timer = New-Object Timers.Timer
PS C:\> $Timer.Interval = 500
PS C:\> 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 ...
PS C:\> $Timer.Enabled = $True
PS C:\> $Subscriber = Get-EventSubscriber -SourceIdentifier Timer.Random
PS C:\> ($Subscriber.action).gettype().fullname
System.Management.Automation.PSEventJob
PS C:\> $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 : {}
...
PS C:\> & $Subscriber.action.module {$Random}
96
PS C:\> & $Subscriber.action.module {$Random}
23
Det här exemplet visar hur du använder den dynamiska modulen i PSEventJob- objekt i händelseprenumerantens åtgärdsegenskap.
Det första kommandot använder cmdleten New-Object för att skapa ett tidsinställt objekt. Det andra kommandot anger tidsintervallet till 500 (millisekunder).
Det tredje kommandot använder cmdleten Register-ObjectEvent för att registrera händelsen Elapsed för timerobjektet. Kommandot innehåller en åtgärd som hanterar händelsen. När tidsintervallet förflutit genereras en händelse och kommandona i åtgärden körs. I det här fallet genererar cmdleten Get-Random ett slumpmässigt tal mellan 0 och 100 och sparar det i variabeln $Random. Källidentifieraren för händelsen är Timer.Random.
När du använder en åtgärd parameter i ett Register-ObjectEvent--kommando returnerar kommandot ett PSEventJob- objekt som representerar åtgärden.
Det fjärde kommandot aktiverar timern.
Det femte kommandot använder cmdleten Get-EventSubscriber för att hämta händelseprenumeranten för händelsen Timer.Random. Det sparar händelseprenumerantobjektet i variabeln $Subscriber.
Det sjätte kommandot visar att händelseprenumerantobjektets åtgärdsegenskap innehåller ett PSEventJob- objekt. I själva verket innehåller den samma PSEventJob- objekt som kommandot Register-ObjectEvent returnerade.
Det sjunde kommandot använder cmdleten Format-List för att visa alla egenskaper för PSEventJob--objektet i egenskapen Åtgärd i en lista. Resultatet visar att PSEventJob--objektet har en modulegenskap som innehåller en modul med dynamiskt skript som implementerar åtgärden.
De återstående kommandona använder anropsoperatorn (&) för att anropa kommandot i modulen och visa värdet för variabeln $Random. Du kan använda anropsoperatorn för att anropa alla kommandon i en modul, inklusive kommandon som inte exporteras. I det här fallet visar kommandona det slumpmässiga tal som genereras när händelsen Förflutit inträffar.
Mer information om moduler finns i about_Modules.
Parametrar
-Force
Anger att denna cmdlet hämtar alla händelseprenumeranter, inklusive prenumeranter för händelser som är dolda med hjälp av SupportEvent parametern Register-ObjectEvent, Register-WmiEvent och Register-EngineEvent.
Typ: | SwitchParameter |
Position: | 1 |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-SourceIdentifier
Anger SourceIdentifier egenskapsvärde som bara hämtar händelseprenumeranterna. Som standard hämtar Get-EventSubscriber alla händelseprenumeranter i sessionen. Jokertecken är inte tillåtna. Den här parametern är skiftlägeskänslig.
Typ: | String |
Position: | 0 |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | True |
Godkänn jokertecken: | False |
-SubscriptionId
Anger den prenumerationsidentifierare som den här cmdleten hämtar. Som standard hämtar Get-EventSubscriber alla händelseprenumeranter i sessionen.
Typ: | Int32 |
Alias: | Id |
Position: | 0 |
Standardvärde: | None |
Obligatorisk: | True |
Godkänn pipeline-indata: | True |
Godkänn jokertecken: | False |
Indata
None
Du kan inte skicka indata till den här cmdleten.
Utdata
Get-EventSubscriber returnerar ett objekt som representerar varje händelseprenumerant.
Kommentarer
Cmdleten New-Event, som skapar en anpassad händelse, genererar ingen prenumerant. Därför hittar cmdleten Get-EventSubscriber inte något prenumerantobjekt för dessa händelser. Men om du använder cmdleten Register-EngineEvent för att prenumerera på en anpassad händelse (för att vidarebefordra händelsen eller för att ange en åtgärd) hittar Get-EventSubscriber den prenumerant som Register-EngineEvent genererar.
Händelser, händelseprenumerationer och händelsekön finns bara i den aktuella sessionen. Om du stänger den aktuella sessionen ignoreras händelsekön och händelseprenumerationen avbryts.