Get-EventSubscriber

Mendapatkan pelanggan peristiwa dalam sesi saat ini.

Sintaks

Get-EventSubscriber
   [[-SourceIdentifier] <String>]
   [-Force]
   [<CommonParameters>]
Get-EventSubscriber
   [-SubscriptionId] <Int32>
   [-Force]
   [<CommonParameters>]

Deskripsi

Get-EventSubscriber Cmdlet mendapatkan pelanggan peristiwa dalam sesi saat ini.

Saat Anda berlangganan peristiwa dengan menggunakan cmdlet peristiwa Daftar, pelanggan peristiwa ditambahkan ke sesi Windows PowerShell Anda, dan peristiwa tempat Anda berlangganan ditambahkan ke antrean peristiwa Anda setiap kali dinaikkan. Untuk membatalkan langganan peristiwa, hapus pelanggan peristiwa dengan menggunakan Unregister-Event cmdlet.

Contoh

Contoh 1: Dapatkan pelanggan peristiwa untuk peristiwa timer

Contoh ini menggunakan Get-EventSubscriber perintah untuk mendapatkan pelanggan peristiwa untuk peristiwa timer.

Perintah pertama menggunakan cmdlet untuk membuat instans New-Object objek timer. Ini menyimpan objek timer baru dalam $Timer variabel .

Perintah kedua menggunakan Get-Member cmdlet untuk menampilkan peristiwa yang tersedia untuk objek timer. Perintah menggunakan parameter Get-Member Jenis cmdlet dengan nilai Peristiwa.

$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

Perintah ketiga menggunakan Register-ObjectEvent cmdlet untuk mendaftar untuk peristiwa Berlalu pada objek timer.

Perintah keempat menggunakan Get-EventSubscriber cmdlet untuk mendapatkan pelanggan peristiwa untuk peristiwa Yang Berlalu .

Contoh 2: Gunakan modul dinamis di PSEventJob di properti Tindakan pelanggan peristiwa

Contoh ini menunjukkan cara menggunakan modul dinamis di objek PSEventJob di properti Tindakan pelanggan peristiwa.

Perintah pertama menggunakan New-Object cmdlet untuk membuat objek timer. Perintah kedua mengatur interval timer menjadi 500 (milidetik).

$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}

Perintah ketiga menggunakan Register-ObjectEvent cmdlet untuk mendaftarkan peristiwa Yang Berlalu dari objek timer. Perintah menyertakan tindakan yang menangani peristiwa. Setiap kali interval timer berlalu, peristiwa dinaikkan dan perintah dalam tindakan berjalan. Dalam hal ini, Get-Random cmdlet menghasilkan angka acak antara 0 dan 100 dan menyimpannya dalam $Random variabel. Pengidentifikasi sumber peristiwa adalah Timer.Random.

Saat Anda menggunakan parameter Tindakan dalam Register-ObjectEvent perintah, perintah mengembalikan objek PSEventJob yang mewakili tindakan.

Perintah keempat memungkinkan timer.

Perintah kelima menggunakan Get-EventSubscriber cmdlet untuk mendapatkan pelanggan peristiwa dari peristiwa Timer.Random . Ini menyimpan objek pelanggan peristiwa dalam $Subscriber variabel.

Perintah keenam menunjukkan bahwa properti Tindakan objek pelanggan peristiwa berisi objek PSEventJob . Bahkan, berisi objek PSEventJob yang sama dengan yang Register-ObjectEvent dikembalikan perintah.

Perintah ketujuh Format-List menggunakan cmdlet untuk menampilkan semua properti objek PSEventJob di properti Tindakan dalam daftar. Hasilnya mengungkapkan bahwa objek PSEventJob memiliki properti Modul yang berisi modul skrip dinamis yang mengimplementasikan tindakan.

Perintah yang tersisa menggunakan operator panggilan (&) untuk memanggil perintah dalam modul dan menampilkan nilai variabel $Random. Anda dapat menggunakan operator panggilan untuk memanggil perintah apa pun dalam modul, termasuk perintah yang tidak diekspor. Dalam hal ini, perintah menunjukkan angka acak yang dihasilkan ketika peristiwa Berlalu terjadi.

Untuk informasi selengkapnya tentang modul, lihat about_Modules.

Parameter

-Force

Menunjukkan bahwa cmdlet ini mendapatkan semua pelanggan peristiwa, termasuk pelanggan untuk peristiwa yang disembunyikan dengan menggunakan parameter SupportEvent dari Register-ObjectEvent, Register-WmiEvent, dan Register-EngineEvent.

Type:SwitchParameter
Position:1
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SourceIdentifier

Menentukan nilai properti SourceIdentifier yang hanya mendapatkan pelanggan peristiwa. Secara default, Get-EventSubscriber mendapatkan semua pelanggan peristiwa dalam sesi. Kartubebas tidak diizinkan. Parameter ini peka huruf besar/kecil.

Type:String
Position:0
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-SubscriptionId

Menentukan pengidentifikasi langganan yang didapat cmdlet ini. Secara default, Get-EventSubscriber mendapatkan semua pelanggan peristiwa dalam sesi.

Type:Int32
Aliases:Id
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

Input

None

Anda tidak dapat menyalurkan objek ke cmdlet ini.

Output

PSEventSubscriber

Cmdlet ini mengembalikan objek PSEventSubscriber untuk setiap pelanggan peristiwa.

Catatan

New-Event Cmdlet, yang membuat peristiwa kustom, tidak menghasilkan pelanggan. Oleh karena itu, Get-EventSubscriber cmdlet tidak akan menemukan objek pelanggan untuk peristiwa ini. Namun, jika Anda menggunakan Register-EngineEvent cmdlet untuk berlangganan peristiwa kustom (untuk meneruskan peristiwa atau menentukan tindakan), Get-EventSubscriber akan menemukan pelanggan yang Register-EngineEvent menghasilkan.

Peristiwa, langganan peristiwa, dan antrean peristiwa hanya ada di sesi saat ini. Jika Anda menutup sesi saat ini, antrean peristiwa akan dibuang dan langganan acara dibatalkan.