Get-EventSubscriber (Microsoft.PowerShell.Utility)
Get-EventSubscriber
- Modül:
- Microsoft.PowerShell.Utility
Geçerli oturumdaki etkinlik abonelerini alır.
Sözdizimi
Get-EventSubscriber
[[-SourceIdentifier] <String>]
[-Force]
[<CommonParameters>]Get-EventSubscriber
[-SubscriptionId] <Int32>
[-Force]
[<CommonParameters>]Tanım
Get-EventSubscriber cmdlet'i geçerli oturumdaki etkinlik abonelerini alır.
Register olay cmdlet'ini kullanarak bir etkinliğe abone olduğunuzda, Windows PowerShell oturumunuza bir olay abonesi eklenir ve abone olduğunuz olaylar, her oluşturulduklarında etkinlik sıranıza eklenir. Bir etkinlik aboneliğini iptal etmek için Unregister-Event cmdlet'ini kullanarak etkinlik abonesini silin.
Örnekler
Örnek 1: Bir zamanlayıcı etkinliği için etkinlik abonesini alın
Bu örnek, bir zamanlayıcı etkinliğine ilişkin etkinlik abonesini almak için Get-EventSubscriber komutunu kullanır.
İlk komut, bir zamanlayıcı nesnesinin örneğini oluşturmak için New-Object cmdlet'ini kullanır. Yeni zamanlayıcı nesnesini $Timer değişkenine kaydeder.
İkinci komut, zamanlayıcı nesneleri için mevcut olan olayları görüntülemek üzere Get-Member cmdlet'ini kullanır. Komut, Get-Member cmdlet'inin 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, timer nesnesindeki Elapsed olayına kaydolmak için Register-ObjectEvent cmdlet'ini kullanır.
Dördüncü komut, Elapsed olayının olay abonesini almak için Get-EventSubscriber cmdlet'ini kullanır.
Örnek 2: Olay abonesinin Action özelliğindeki PSEventJob'daki dinamik modülü kullanın
Bu örnek, etkinlik abonesinin Action özelliğindeki PSEventJob nesnesindeki dinamik modülün nasıl kullanılacağını gösterir.
İlk komut, bir zamanlayıcı nesnesi oluşturmak için New-Object cmdlet'ini kullanır. İ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, timer nesnesinin Elapsed olayını kaydetmek için Register-ObjectEvent cmdlet'ini kullanır. Komut, olayı işleyen bir eylem içerir. Zamanlayıcı aralığı her dolduğunda, bir olay başlatılır ve eylemdeki komutlar çalıştırılır. Bu durumda, Get-Random cmdlet'i 0 ile 100 arasında rastgele bir sayı üretir ve bunu $Random değişkenine kaydeder. Olayın kaynak tanımlayıcısı Timer.Random'dur.
Register-ObjectEvent komutunda bir Action 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 etkinlik abonesini almak için Get-EventSubscriber cmdlet'ini kullanır. Etkinlik abonesi nesnesini $Subscriber değişkenine kaydeder.
Altıncı komut, olay abonesi nesnesinin Action özelliğinin bir PSEventJob nesnesi içerdiğini gösterir. Aslında, Register-ObjectEvent komutunun döndürdüğü aynı PSEventJob nesnesini içerir.
Yedinci komut, PSEventJob nesnesinin tüm özelliklerini bir listedeki Action özelliğinde görüntülemek için Format-List cmdlet'ini kullanır. Sonuç, PSEventJob nesnesinin, eylemi uygulayan dinamik bir komut dosyası modülü içeren bir Module özelliğine sahip olduğunu ortaya çıkarır.
Geri kalan komutlar, modüldeki komutu çağırmak ve $Random değişkeninin değerini görüntülemek için çağrı operatörünü (&) kullanır. Dışa aktarılmayan komutlar da dahil olmak üzere, bir modüldeki herhangi bir komutu çağırmak için çağrı operatörünü kullanabilirsiniz. Bu durumda komutlar, Elapsed olayı meydana geldiğinde oluşturulan rastgele sayıyı gösterir.
Modüller hakkında daha fazla bilgi için bkz. about_Modules.
Örnek 3: Gizli etkinlik abonelerini alma
Bu örnek, PowerShell.Exiting olayı için bir etkinlik abonesini kaydeder. Abonelik, olay abonesini Get-EventSubscriber cmdlet'inin varsayılan çıkışından gizleyen SupportEvent parametresi kullanılarak kaydedilir. Gizli aboneler dahil tüm etkinlik abonelerini almak için Zorla parametresini kullanmanız gerekir.
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 : FalseParametreler
-Force
Bu cmdlet'in, Register-ObjectEvent, Register-WmiEvent'in SupportEvent parametresi kullanılarak gizlenen etkinliklere ilişkin aboneler de dahil olmak üzere tüm etkinlik abonelerini aldığını belirtir. ve Register-EngineEvent.
- Tip :
SwitchParameter
- Konum:
1
- Varsayılan değer:
None
- Gerekli:
False
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
-
False
-SourceIdentifier
Yalnızca etkinlik abonelerini alan SourceIdentifier özellik değerini belirtir. Varsayılan olarak Get-EventSubscriber oturumdaki tüm etkinlik abonelerini alır. Joker karakterlere izin verilmez. Bu parametre büyük/küçük harfe duyarlıdır.
- Tip :
String
- Konum:
0
- Varsayılan değer:
None
- Gerekli:
False
- Boru hattı girişini kabul edin:
True
- Joker karakterleri kabul et:
False
-SubscriptionId
Bu cmdlet'in aldığı abonelik tanımlayıcısını belirtir. Varsayılan olarak Get-EventSubscriber oturumdaki tüm etkinlik abonelerini alır.
- Tip :
Int32
- Takma adlar:
Id
- Konum:
0
- Varsayılan değer:
None
- Gerekli:
True
- Boru hattı girişini kabul edin:
True
- Joker karakterleri kabul et:
False
Girişler
Yok
Nesneleri bu cmdlet'e aktaramazsınız.
Çıkışlar
PSEventSubscriber
Bu cmdlet, her etkinlik abonesi için bir PSEventSubscriber nesnesi döndürür.
Notlar
Özel bir etkinlik oluşturan Yeni Etkinlik cmdlet'i bir abone oluşturmaz. Bu nedenle Get-EventSubscriber cmdlet'i bu olaylar için bir abone nesnesi bulamaz. Ancak, özel bir etkinliğe abone olmak için Register-EngineEvent cmdlet'ini kullanırsanız (etkinliği iletmek veya bir eylem belirtmek için), Get-EventSubscriber şunu bulacaktır: Register-EngineEvent'in oluşturduğu abone.
Etkinlikler, etkinlik abonelikleri ve olay kuyruğu yalnızca geçerli oturumda mevcuttur. Geçerli oturumu kapatırsanız etkinlik kuyruğu atılır ve etkinlik aboneliği iptal edilir.