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 timerobjekt. Kommandot använder parametern Type 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 egenskapen Action för händelseprenumeranten
Det här exemplet visar hur du använder den dynamiska modulen i PSEventJob-objektet i egenskapen Action för händelseprenumeranten.
Det första kommandot använder cmdleten New-Object
för att skapa ett timerobjekt. Det andra kommandot anger timerns intervall 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 utlöses 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 timer.random-händelsen . Det sparar händelseprenumerantobjektet i variabeln $Subscriber
.
Det sjätte kommandot visar att egenskapen Action för händelseprenumerantobjektet 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 Module-egenskap 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 parametern Register-ObjectEvent
SupportEvent i , Register-WmiEvent
och Register-EngineEvent
.
Type: | SwitchParameter |
Position: | 1 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SourceIdentifier
Anger egenskapsvärdet SourceIdentifier som bara hämtar händelseprenumeranterna. Som standard Get-EventSubscriber
hämtar alla händelseprenumeranter i sessionen. Jokertecken tillåts inte. Den här parametern är skiftlägeskänslig.
Type: | String |
Position: | 0 |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-SubscriptionId
Anger den prenumerationsidentifierare som denna cmdlet hämtar. Som standard Get-EventSubscriber
hämtar alla händelseprenumeranter i sessionen.
Type: | Int32 |
Aliases: | Id |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | 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 inte en 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 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.