Get-EventSubscriber

Získá odběratele události v aktuální relaci.

Syntax

Get-EventSubscriber
   [[-SourceIdentifier] <String>]
   [-Force]
   [<CommonParameters>]
Get-EventSubscriber
   [-SubscriptionId] <Int32>
   [-Force]
   [<CommonParameters>]

Description

Rutina Get-EventSubscriber získá odběratele událostí v aktuální relaci.

Když se přihlásíte k odběru události pomocí rutiny události Register, přidá se odběratel události do relace Windows PowerShellu a události, ke kterým jste se přihlásili, se přidají do fronty událostí při každém vyvolání. Pokud chcete zrušit odběr události, odstraňte odběratele události pomocí rutiny Unregister-Event .

Příklady

Příklad 1: Získání odběratele události pro událost časovače

Tento příklad používá Get-EventSubscriber příkaz k získání odběratele události pro událost časovače.

První příkaz pomocí rutiny New-Object vytvoří instanci objektu časovače. Uloží nový objekt časovače $Timer do proměnné.

Druhý příkaz pomocí rutiny Get-Member zobrazí události, které jsou k dispozici pro objekty časovače. Příkaz používá parametr Get-Member Type rutiny s hodnotou Event.

$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

Třetí příkaz používá rutinu Register-ObjectEvent k registraci události Uplynulé u objektu časovače.

Čtvrtý příkaz používá rutinu Get-EventSubscriber k získání odběratele události uplynulé události.

Příklad 2: Použití dynamického modulu v PSEventJob ve vlastnosti Akce odběratele události

Tento příklad ukazuje, jak použít dynamický modul v PSEventJob objektu v Action vlastnost odběratel události.

První příkaz pomocí rutiny New-Object vytvoří objekt časovače. Druhý příkaz nastaví interval časovače na 500 (milisekund).

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

Třetí příkaz používá rutinu Register-ObjectEvent k registraci uplynulé události objektu časovače. Příkaz obsahuje akci, která zpracovává událost. Při každém uplynutí intervalu časovače se vyvolá událost a příkazy v akci se spustí. V tomto případě Get-Random rutina vygeneruje náhodné číslo od 0 do 100 a uloží ho $Random do proměnné. Zdrojový identifikátor události je Timer.Random.

Pokud v příkazu použijete parametr Register-ObjectEvent Action, vrátí příkaz objekt PSEventJob, který představuje akci.

Čtvrtý příkaz povolí časovač.

Pátý příkaz používá rutinu Get-EventSubscriber k získání odběratele události Timer.Random . Uloží objekt odběratele události do $Subscriber proměnné.

Šestý příkaz ukazuje, že action vlastnost odběratel objektu události obsahuje PSEventJob objekt. Ve skutečnosti obsahuje stejný PSEventJob objekt, který Register-ObjectEvent příkaz vrátil.

Sedmý příkaz používá rutinu Format-List k zobrazení všech vlastností PSEventJob objektu v Action vlastnost v seznamu. Výsledek odhalí, že objekt PSEventJob má vlastnost Modulu, která obsahuje modul dynamického skriptu, který implementuje akci.

Zbývající příkazy používají operátor volání (&) k vyvolání příkazu v modulu a zobrazení hodnoty proměnné $Random. Operátor volání můžete použít k vyvolání libovolného příkazu v modulu, včetně příkazů, které nejsou exportovány. V tomto případě příkazy zobrazují náhodné číslo, které se generuje, když dojde k události Uplynulá.

Další informace o modulech najdete v tématu about_Modules.

Parametry

-Force

Označuje, že tato rutina získá všechny odběratele událostí, včetně odběratelů událostí, které jsou skryté pomocí parametru SupportEvent parametru Register-ObjectEvent, Register-WmiEventa Register-EngineEvent.

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

-SourceIdentifier

Určuje hodnotu vlastnosti SourceIdentifier , která získá pouze odběratele události. Ve výchozím nastavení Get-EventSubscriber získá všechny odběratele událostí v relaci. Zástupné dokumentace nejsou povoleny. U tohoto parametru se rozlišují malá a velká písmena.

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

-SubscriptionId

Určuje identifikátor předplatného, který tato rutina získá. Ve výchozím nastavení Get-EventSubscriber získá všechny odběratele událostí v relaci.

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

Vstupy

None

Do této rutiny nemůžete roušit objekty.

Výstupy

PSEventSubscriber

Tato rutina vrátí objekt PSEventSubscriber pro každého odběratele události.

Poznámky

Rutina New-Event , která vytvoří vlastní událost, negeneruje odběratele. Proto rutina Get-EventSubscriber nenajde objekt odběratele pro tyto události. Pokud ale použijete rutinu Register-EngineEvent k přihlášení k odběru vlastní události (k předání události nebo k zadání akce), vyhledá odběratele, Get-EventSubscriber který Register-EngineEvent se vygeneruje.

Události, odběry událostí a fronta událostí existují pouze v aktuální relaci. Pokud zavřete aktuální relaci, fronta událostí se zahodí a odběr události se zruší.