Dela via


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

PSEventSubscriber

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.