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
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.
Příklad 3: Získání skrytých odběratelů událostí
Tento příklad zaregistruje odběratele události pro událost PowerShell.Exiting . Odběr se zaregistruje pomocí parametru SupportEvent , který skryje odběratele události z výchozího výstupu rutiny Get-EventSubscriber
. K získání všech odběratelů událostí, včetně skrytých odběratelů, musíte použít parametr Force .
Register-EngineEvent -SourceIdentifier PowerShell.Exiting -SupportEvent -Action {
Get-History | Export-Clixml d:\temp\history.clixml
}
Get-EventSubscriber # No output - must use -Force
Get-EventSubscriber -Force
SubscriptionId : 1
SourceObject :
EventName :
SourceIdentifier : PowerShell.Exiting
Action : System.Management.Automation.PSEventJob
HandlerDelegate :
SupportEvent : True
ForwardEvent : False
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-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
Do této rutiny nemůžete roušit objekty.
Výstupy
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ší.