Delen via


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

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

In dit voorbeeld wordt een opdracht get-EventSubscriber Get-EventSubscriber gebruikt om de gebeurtenisabonnee voor een timergebeurtenis 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 $Timer variabele.

De tweede opdracht gebruikt de Get-Member cmdlet om de gebeurtenissen weer te geven die beschikbaar zijn voor timerobjecten. De opdracht gebruikt de parameter Type van de cmdlet Get-Member met de waarde Event.

De derde opdracht gebruikt de Register-ObjectEvent cmdlet om te registreren voor de gebeurtenis Verstreken op 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

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

In dit voorbeeld ziet u hoe u de dynamische module gebruikt in de PSEventJob object in de eigenschap Actie 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).

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 gebruikt in een opdracht Register-ObjectEvent, 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 van de Timer.Random-gebeurtenis op te halen. Het object gebeurtenisabonnee wordt opgeslagen in de variabele $Subscriber.

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 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.

Parameters

-Force

Hiermee wordt aangegeven dat met deze cmdlet alle gebeurtenisabonnees worden opgehaald, inclusief abonnees voor gebeurtenissen die zijn verborgen met behulp van de parameter SupportEvent parameter 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 eigenschapswaarde SourceIdentifier op die alleen de gebeurtenisabonnees ontvangt. Standaard haalt Get-EventSubscriber alle gebeurtenisabonnees in de sessie op. 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 haalt Get-EventSubscriber alle gebeurtenisabonnees in de sessie op.

Type:Int32
Aliassen:Id
Position:0
Default value:None
Vereist:True
Pijplijninvoer accepteren:True
Jokertekens accepteren:False

Invoerwaarden

None

U kunt invoer voor deze cmdlet niet doorsluisen.

Uitvoerwaarden

PSEventSubscriber

Get-EventSubscriber een object retourneert dat elke gebeurtenisabonnee vertegenwoordigt.

Notities

  • De New-Event-cmdlet, waarmee een aangepaste gebeurtenis wordt gemaakt, genereert geen abonnee. Daarom vindt de cmdlet Get-EventSubscriber geen abonneeobject voor deze gebeurtenissen. Als u echter de Register-EngineEvent-cmdlet 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.