Sdílet prostřednictvím


Get-EventSubscriber

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

Syntaxe

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

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

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

První příkaz používá rutinu New-Object k vytvoření instance objektu časovače. Uloží nový objekt časovače do proměnné $Timer.

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

Třetí příkaz používá rutinu Register-ObjectEvent k registraci události Uplynulé události v 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

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

Tento příklad ukazuje, jak používat dynamický modul v objektu PSEventJob ve vlastnosti Akce odběratele události.

První příkaz používá rutinu New-Object k vytvoření objektu časovače. Druhý příkaz nastaví interval časovače na 500 (milisekund).

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ě rutina Get-Random vygeneruje náhodné číslo mezi 0 a 100 a uloží ho do proměnné $Random. Zdrojový identifikátor události je Timer.Random.

Při použití action parametr v Register-ObjectEvent příkaz vrátí příkaz PSEventJob objekt, 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 proměnné $Subscriber.

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

Sedmý příkaz používá rutinu Format-List k zobrazení všech vlastností PSEventJob objektu v action vlastnosti v seznamu. Výsledek zjistí, ž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 omodule about_Moduleschch

Parametry

-Force

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

Typ:SwitchParameter
Position:1
Default value:None
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky: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.

Typ:String
Position:0
Default value:None
Vyžadováno:False
Přijmout vstup kanálu:True
Přijmout zástupné znaky: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.

Typ:Int32
Aliasy:Id
Position:0
Default value:None
Vyžadováno:True
Přijmout vstup kanálu:True
Přijmout zástupné znaky:False

Vstupy

None

Vstup do této rutiny nelze převést.

Výstupy

PSEventSubscriber

Get-EventSubscriber vrátí objekt, který představuje 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 (pro přeposílání události nebo k zadání akce), Get-EventSubscriber najde odběratele, který Register-EngineEvent 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ší.