Get-EventSubscriber
Pobiera subskrybentów zdarzeń w bieżącej sesji.
Składnia
Get-EventSubscriber
[[-SourceIdentifier] <String>]
[-Force]
[<CommonParameters>]
Get-EventSubscriber
[-SubscriptionId] <Int32>
[-Force]
[<CommonParameters>]
Opis
Polecenie Get-EventSubscriber
cmdlet pobiera subskrybentów zdarzeń w bieżącej sesji.
Gdy subskrybujesz zdarzenie przy użyciu polecenia cmdlet rejestru zdarzeń, subskrybent zdarzenia jest dodawany do sesji Windows PowerShell, a zdarzenia, do których subskrybujesz, są dodawane do kolejki zdarzeń za każdym razem, gdy są zgłaszane. Aby anulować subskrypcję zdarzeń, usuń subskrybenta zdarzeń przy użyciu Unregister-Event
polecenia cmdlet .
Przykłady
Przykład 1. Pobieranie subskrybenta zdarzenia dla zdarzenia czasomierza
W tym przykładzie użyto Get-EventSubscriber
polecenia , aby pobrać subskrybenta zdarzenia dla zdarzenia czasomierza.
Pierwsze polecenie używa New-Object
polecenia cmdlet do utworzenia wystąpienia obiektu czasomierza. Zapisuje nowy obiekt czasomierza w zmiennej $Timer
.
Drugie polecenie używa Get-Member
polecenia cmdlet do wyświetlania zdarzeń, które są dostępne dla obiektów czasomierza. Polecenie używa parametru Get-Member
Type polecenia cmdlet z wartością Zdarzenie.
$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
Trzecie polecenie używa Register-ObjectEvent
polecenia cmdlet do zarejestrowania zdarzenia Upłynęło w obiekcie czasomierza.
Czwarte polecenie używa Get-EventSubscriber
polecenia cmdlet , aby pobrać subskrybenta zdarzenia dla zdarzenia, które upłynął .
Przykład 2: Używanie modułu dynamicznego w obiekcie PSEventJob we właściwości Action subskrybenta zdarzenia
W tym przykładzie pokazano, jak używać modułu dynamicznego w obiekcie PSEventJob we właściwości Action subskrybenta zdarzenia.
Pierwsze polecenie używa New-Object
polecenia cmdlet do utworzenia obiektu czasomierza. Drugie polecenie ustawia interwał czasomierza na 500 (milisekundy).
$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}
Trzecie polecenie używa Register-ObjectEvent
polecenia cmdlet do zarejestrowania zdarzenia Upłynęło dla obiektu czasomierza. Polecenie zawiera akcję, która obsługuje zdarzenie. Za każdym razem, gdy interwał czasomierza upłynie, jest zgłaszane zdarzenie i polecenia w akcji są uruchamiane. W tym przypadku Get-Random
polecenie cmdlet generuje losową liczbę z zakresu od 0 do 100 i zapisuje ją w zmiennej $Random
. Identyfikator źródłowy zdarzenia to Timer.Random.
W przypadku użycia parametru Akcja w poleceniu Register-ObjectEvent
polecenie zwraca obiekt PSEventJob reprezentujący akcję.
Czwarte polecenie włącza czasomierz.
Piąte polecenie używa Get-EventSubscriber
polecenia cmdlet do pobrania subskrybenta zdarzenia Timer.Random . Zapisuje obiekt subskrybenta zdarzeń w zmiennej $Subscriber
.
Szóste polecenie pokazuje, że właściwość Action obiektu subskrybenta zdarzenia zawiera obiekt PSEventJob . W rzeczywistości zawiera ten sam obiekt PSEventJob , który Register-ObjectEvent
zwrócił polecenie.
Siódme polecenie używa Format-List
polecenia cmdlet do wyświetlania wszystkich właściwości obiektu PSEventJob we właściwości Action na liście. Wynik pokazuje, że obiekt PSEventJob ma właściwość Module, która zawiera moduł skryptu dynamicznego, który implementuje akcję.
Pozostałe polecenia używają operatora wywołania (&
), aby wywołać polecenie w module i wyświetlić wartość zmiennej $Random. Możesz użyć operatora wywołania, aby wywołać dowolne polecenie w module, w tym polecenia, które nie są eksportowane. W tym przypadku polecenia pokazują liczbę losową, która jest generowana po wystąpieniu zdarzenia upłynął.
Aby uzyskać więcej informacji na temat modułów, zobacz about_Modules.
Parametry
-Force
Wskazuje, że to polecenie cmdlet pobiera wszystkich subskrybentów zdarzeń, w tym subskrybentów zdarzeń ukrytych przy użyciu parametru SupportEvent parametru Register-ObjectEvent
, Register-WmiEvent
i Register-EngineEvent
.
Type: | SwitchParameter |
Position: | 1 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SourceIdentifier
Określa wartość właściwości SourceIdentifier , która pobiera tylko subskrybentów zdarzeń. Domyślnie Get-EventSubscriber
program pobiera wszystkich subskrybentów zdarzeń w sesji. Symbole wieloznaczne nie są dozwolone. W tym parametrze jest uwzględniana wielkość liter.
Type: | String |
Position: | 0 |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-SubscriptionId
Określa identyfikator subskrypcji, który otrzymuje to polecenie cmdlet. Domyślnie Get-EventSubscriber
program pobiera wszystkich subskrybentów zdarzeń w sesji.
Type: | Int32 |
Aliases: | Id |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Dane wejściowe
None
Nie można przekazać danych wejściowych potoku do tego polecenia cmdlet.
Dane wyjściowe
Get-EventSubscriber
Zwraca obiekt reprezentujący każdego subskrybenta zdarzeń.
Uwagi
Polecenie New-Event
cmdlet, które tworzy zdarzenie niestandardowe, nie generuje subskrybenta. W związku z Get-EventSubscriber
tym polecenie cmdlet nie znajdzie obiektu subskrybenta dla tych zdarzeń. Jeśli jednak używasz Register-EngineEvent
polecenia cmdlet do subskrybowania zdarzenia niestandardowego (w celu przekazania zdarzenia lub określenia akcji), Get-EventSubscriber
znajdzie subskrybenta, który Register-EngineEvent
generuje.
Zdarzenia, subskrypcje zdarzeń i kolejka zdarzeń istnieją tylko w bieżącej sesji. Jeśli zamkniesz bieżącą sesję, kolejka zdarzeń zostanie odrzucona i subskrypcja zdarzeń zostanie anulowana.