Aracılığıyla paylaş


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-ObjectEventGeç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-ObjectEventEylem 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-ListPSEventJob 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-WmiEventve Register-EngineEvent'nin SupportEvent parametresi kullanılarak gizlenen olaylar için aboneler de dahil olmak üzere tüm olay abonelerini Register-ObjectEventaldığı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

PSEventSubscriber

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.