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 din Windows PowerShell-session 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
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 Typ för cmdleten Get-Member
med värdet Händelse.
$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
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
Det här exemplet visar hur du använder den dynamiska modulen i PSEventJob-objektet 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).
$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}
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ärdsparameter 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 egenskapen Åtgärd för objektet händelseprenumerant innehåller ett PSEventJob-objekt . I själva verket innehåller den samma PSEventJob-objekt som Register-ObjectEvent
kommandot 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.
Exempel 3: Hämta dolda händelseprenumeranter
I det här exemplet registreras en händelseprenumerant för händelsen PowerShell.Exiting . Prenumerationen registreras med parametern SupportEvent , som döljer händelseprenumeranten från cmdletens Get-EventSubscriber
standardutdata. Du måste använda force-parametern för att hämta alla händelseprenumeranter, inklusive dolda prenumeranter.
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
Parametrar
-Force
Anger att den här cmdleten hämtar alla händelseprenumeranter, inklusive prenumeranter för händelser som är dolda med hjälp av parametern SupportEvent för 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 egenskapsvärdet SourceIdentifier som endast hämtar händelseprenumeranterna. Som standard Get-EventSubscriber
hämtar 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 Get-EventSubscriber
hämtar 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 objekt till den här cmdleten.
Utdata
Den här cmdleten returnerar ett PSEventSubscriber-objekt för 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) Get-EventSubscriber
hittar du 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.