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