Delen via


Get-EventSubscriber

Hiermee haalt u de gebeurtenisabonnees op in de huidige sessie.

Syntax

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 gebeurtenis-cmdlet Registreren, wordt een gebeurtenisabonnee toegevoegd aan uw Windows PowerShell sessie en worden de gebeurtenissen waarop 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 Unregister-Event cmdlet.

Voorbeelden

Voorbeeld 1: De gebeurtenisabonnee ophalen voor een timer-gebeurtenis

In dit voorbeeld wordt een Get-EventSubscriber opdracht gebruikt om de gebeurtenisabonnee voor een timer-gebeurtenis op te halen.

De eerste opdracht gebruikt de New-Object cmdlet 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 maakt gebruik van de parameter Type van de Get-Member cmdlet met de waarde Gebeurtenis.

$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

De derde opdracht gebruikt de Register-ObjectEvent cmdlet om te registreren voor de gebeurtenis Elapsed op het timer-object.

De vierde opdracht maakt gebruik van de Get-EventSubscriber cmdlet om de gebeurtenisabonnee op te halen voor de gebeurtenis Elapsed .

Voorbeeld 2: De dynamische module in PSEventJob gebruiken in de eigenschap Action van de gebeurtenisabonnee

In dit voorbeeld ziet u hoe u de dynamische module in het object PSEventJob gebruikt in de eigenschap Action van de gebeurtenisabonnee.

De eerste opdracht gebruikt de New-Object cmdlet om een timerobject te maken. Met de tweede opdracht wordt het interval van de timer ingesteld op 500 (milliseconden).

$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}

De derde opdracht gebruikt de Register-ObjectEvent cmdlet om de gebeurtenis Verstreken van het timerobject te registreren. De opdracht bevat een actie die de gebeurtenis verwerkt. Wanneer het timerinterval is verstreken, wordt een gebeurtenis gegenereerd en worden de opdrachten in de actie 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 actieparameter in een Register-ObjectEvent opdracht gebruikt, retourneert de opdracht een PSEventJob-object dat de actie vertegenwoordigt.

Met de vierde opdracht schakelt u de timer in.

De vijfde opdracht gebruikt de Get-EventSubscriber cmdlet om de gebeurtenisabonnee van de gebeurtenis Timer.Random op te halen. Het gebeurtenisabonneeobject wordt opgeslagen in de $Subscriber variabele.

De zesde opdracht geeft aan dat de eigenschap Action van het gebeurtenisabonneeobject een PSEventJob-object bevat. In feite bevat het hetzelfde PSEventJob-object dat de Register-ObjectEvent opdracht heeft geretourneerd.

De zevende opdracht gebruikt de Format-List cmdlet om alle eigenschappen van het object PSEventJob in de eigenschap Action in een lijst weer te geven. Het resultaat laat zien dat het object PSEventJob een moduleeigenschap heeft die een dynamische scriptmodule bevat waarmee de actie wordt geïmplementeerd.

De overige opdrachten gebruiken de aanroepoperator (&) om de opdracht in de module aan te roepen en de waarde van de variabele $Random 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 tonen de opdrachten het willekeurige getal dat wordt gegenereerd wanneer de gebeurtenis Elapsed plaatsvindt.

Zie about_Modules voor meer informatie over modules.

Parameters

-Force

Geeft aan dat deze cmdlet alle gebeurtenisabonnees ophaalt, inclusief abonnees voor gebeurtenissen die zijn verborgen met behulp van de parameter SupportEvent van Register-ObjectEvent, Register-WmiEventen Register-EngineEvent.

Type:SwitchParameter
Position:1
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SourceIdentifier

Hiermee geeft u de eigenschapswaarde SourceIdentifier op waarmee alleen de gebeurtenisabonnees worden opgehaald. Krijgt standaard Get-EventSubscriber alle gebeurtenisabonnees in de sessie. Jokertekens zijn niet toegestaan. Deze parameter is hoofdlettergevoelig.

Type:String
Position:0
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-SubscriptionId

Hiermee geeft u de abonnements-id op die met deze cmdlet wordt opgehaald. Krijgt standaard Get-EventSubscriber alle gebeurtenisabonnees in de sessie.

Type:Int32
Aliases:Id
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

Invoerwaarden

None

U kunt geen invoer doorspezen naar deze cmdlet.

Uitvoerwaarden

PSEventSubscriber

Get-EventSubscriber retourneert een -object dat elke gebeurtenisabonnee vertegenwoordigt.

Notities

De New-Event cmdlet, waarmee een aangepaste gebeurtenis wordt gemaakt, genereert geen abonnee. Daarom vindt de Get-EventSubscriber cmdlet 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), Get-EventSubscriber vindt u 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.