Get-EventSubscriber
Geçerli oturumdaki olay abonelerini alır.
Syntax
Get-EventSubscriber
[[-SourceIdentifier] <String>]
[-Force]
[<CommonParameters>]
Get-EventSubscriber
[-SubscriptionId] <Int32>
[-Force]
[<CommonParameters>]
Description
cmdlet'i Get-EventSubscriber
geçerli oturumdaki olay abonelerini alır.
Register olayı cmdlet'ini kullanarak bir olaya abone olduğunuzda, Windows PowerShell oturumunuza bir olay abonesi eklenir ve abone olduğunuz olaylar her tetiklendiğinde olay kuyruğunuza eklenir. Bir olay aboneliğini iptal etmek için cmdlet'ini kullanarak olay abonesini Unregister-Event
silin.
Örnekler
Örnek 1: Zamanlayıcı olayı için olay abonesini alma
Bu örnekte, bir Get-EventSubscriber
zamanlayıcı olayının olay abonesini almak için bir komut kullanılır.
İlk komut, zamanlayıcı nesnesinin New-Object
bir örneğini oluşturmak için cmdlet'ini kullanır. Yeni zamanlayıcı nesnesini değişkene $Timer
kaydeder.
İkinci komut, zamanlayıcı nesneleri için kullanılabilen olayları görüntülemek için cmdlet'ini kullanır Get-Member
. Komut, cmdlet'in Get-Member
Type parametresini Event değeriyle kullanır.
$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
Üçüncü komut, zamanlayıcı nesnesinde Register-ObjectEvent
Geçen olayına kaydolmak için cmdlet'ini kullanır.
Dördüncü komut, geçen olayın olay abonesini almak için cmdlet'ini kullanırGet-EventSubscriber
.
Örnek 2: Olay abonesinin Action özelliğinde PSEventJob'ta dinamik modülü kullanma
Bu örnekte, olay abonesinin Action özelliğindeki PSEventJob nesnesindeki dinamik modülün nasıl kullanılacağı gösterilmektedir.
İlk komut bir zamanlayıcı nesnesi oluşturmak için cmdlet'ini kullanır New-Object
. İkinci komut, zamanlayıcının aralığını 500 (milisaniye) olarak ayarlar.
$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}
Üçüncü komut, zamanlayıcı nesnesinin Register-ObjectEvent
Geçen olayını kaydetmek için cmdlet'ini kullanır. komutu, olayı işleyen bir eylem içerir. Süreölçer aralığı her geçtiğinde bir olay oluşturulur ve eylemdeki komutlar çalıştırılır. Bu durumda, Get-Random
cmdlet 0 ile 100 arasında rastgele bir sayı oluşturur ve değişkenine $Random
kaydeder. Olayın kaynak tanımlayıcısı Timer.Random'dır.
Bir komutta Register-ObjectEvent
Eylem parametresi kullandığınızda, komut eylemi temsil eden bir PSEventJob nesnesi döndürür.
Dördüncü komut zamanlayıcıyı etkinleştirir.
Beşinci komut, Timer.Random olayının olay abonesini almak için cmdlet'ini kullanırGet-EventSubscriber
. Olay abone nesnesini değişkenine $Subscriber
kaydeder.
Altıncı komut, olay abone nesnesinin Action özelliğinin bir PSEventJob nesnesi içerdiğini gösterir. Aslında, komutun döndürdüğünü aynı PSEventJob nesnesini Register-ObjectEvent
içerir.
Yedinci komut, listedeki Action özelliğinde Format-List
PSEventJob nesnesinin tüm özelliklerini görüntülemek için cmdlet'ini kullanır. Sonuç, PSEventJob nesnesinin eylemi uygulayan dinamik betik modülünü içeren bir Module özelliğine sahip olduğunu gösterir.
Kalan komutlar, modüldeki komutu çağırmak ve $Random değişkeninin değerini görüntülemek için çağrı işlecini (&
) kullanır. Dışarı aktarılmayan komutlar da dahil olmak üzere modüldeki herhangi bir komutu çağırmak için çağrı işlecini kullanabilirsiniz. Bu durumda komutlar Geçen olay gerçekleştiğinde oluşturulan rastgele sayıyı gösterir.
Modüller hakkında daha fazla bilgi için bkz. about_Modules.
Parametreler
-Force
Bu cmdlet'in , Register-WmiEvent
ve Register-EngineEvent
'nin SupportEvent parametresi kullanılarak gizlenen olaylar için aboneler de dahil olmak üzere tüm olay abonelerini Register-ObjectEvent
aldığını gösterir.
Type: | SwitchParameter |
Position: | 1 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SourceIdentifier
Yalnızca olay abonelerini alan SourceIdentifier özellik değerini belirtir. Varsayılan olarak, Get-EventSubscriber
oturumdaki tüm olay abonelerini alır. Joker karakterlere izin verilmez. Bu parametre büyük/küçük harfe duyarlıdır.
Type: | String |
Position: | 0 |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-SubscriptionId
Bu cmdlet'in aldığı abonelik tanımlayıcısını belirtir. Varsayılan olarak, Get-EventSubscriber
oturumdaki tüm olay abonelerini alır.
Type: | Int32 |
Aliases: | Id |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Girişler
None
Bu cmdlet'e giriş kanalı yapamazsınız.
Çıkışlar
Get-EventSubscriber
her olay abonesi temsil eden bir nesnesi döndürür.
Notlar
New-Event
Özel bir olay oluşturan cmdlet abone oluşturmaz. Bu nedenle, Get-EventSubscriber
cmdlet bu olaylar için bir abone nesnesi bulamaz. Ancak, özel bir olaya abone olmak için cmdlet'ini kullanırsanız Register-EngineEvent
(olayı iletmek veya bir eylem belirtmek için), Get-EventSubscriber
oluşturan aboneyi Register-EngineEvent
bulur.
Olaylar, olay abonelikleri ve olay kuyruğu yalnızca geçerli oturumda bulunur. Geçerli oturumu kapatırsanız, olay kuyruğu atılır ve olay aboneliği iptal edilir.