Get-EventSubscriber
Mendapatkan pelanggan peristiwa dalam sesi saat ini.
Sintaks
BySource (Default)
Get-EventSubscriber
[[-SourceIdentifier] <String>]
[-Force]
[<CommonParameters>]
ById
Get-EventSubscriber
[-SubscriptionId] <Int32>
[-Force]
[<CommonParameters>]
Deskripsi
cmdlet Get-EventSubscriber 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 cmdlet Unregister-Event.
Contoh
Contoh 1: Dapatkan pelanggan peristiwa untuk peristiwa timer
Contoh ini menggunakan perintah Get-EventSubscriber untuk mendapatkan pelanggan peristiwa untuk peristiwa timer.
Perintah pertama menggunakan cmdlet New-Object untuk membuat instans objek timer. Ini menyimpan objek timer baru dalam variabel $Timer.
Perintah kedua menggunakan cmdlet Get-Member untuk menampilkan peristiwa yang tersedia untuk objek timer. Perintah menggunakan parameter Jenis cmdlet Get-Member 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 cmdlet Register-ObjectEvent untuk mendaftar peristiwa Berlalu pada objek timer.
Perintah keempat menggunakan cmdlet Get-EventSubscriber untuk mendapatkan pelanggan peristiwa untuk peristiwa 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 cmdlet New-Object 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 cmdlet Register-ObjectEvent 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, cmdlet Get-Random menghasilkan angka acak antara 0 dan 100 dan menyimpannya dalam variabel $Random. Pengidentifikasi sumber peristiwa adalah Timer.Random.
Saat Anda menggunakan parameter Tindakan dalam perintah Register-ObjectEvent, perintah mengembalikan objek PSEventJob yang mewakili tindakan.
Perintah keempat memungkinkan timer.
Perintah kelima menggunakan cmdlet Get-EventSubscriber untuk mendapatkan pelanggan peristiwa dari peristiwa Timer.Random. Ini menyimpan objek pelanggan peristiwa dalam variabel $Subscriber.
Perintah keenam menunjukkan bahwa properti Tindakan objek pelanggan peristiwa berisi objek PSEventJob. Bahkan, berisi objek PSEventJob yang sama dengan yang dikembalikan perintah Register-ObjectEvent.
Perintah ketujuh menggunakan cmdlet Format-List untuk menampilkan semua properti objek PSEventJob di properti Tindakan dalam daftar. Hasilnya mengungkapkan bahwa objek
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.
Contoh 3: Dapatkan pelanggan peristiwa tersembunyi
Contoh ini mendaftarkan pelanggan peristiwa untuk peristiwa PowerShell.Keluar dari. Langganan terdaftar menggunakan parameter SupportEvent, yang menyembunyikan pelanggan peristiwa dari output default cmdlet Get-EventSubscriber. Anda harus menggunakan parameter Force untuk mendapatkan semua pelanggan peristiwa, termasuk pelanggan tersembunyi.
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 : False
Parameter
-Force
Menunjukkan bahwa cmdlet ini mendapatkan semua pelanggan peristiwa, termasuk pelanggan untuk peristiwa yang disembunyikan dengan menggunakan parameter SupportEvent dari parameter Register-ObjectEvent, Register-WmiEvent, dan Register-EngineEvent.
Properti parameter
| Jenis: | SwitchParameter |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Kumpulan parameter
(All)
| Position: | 1 |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | 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.
Properti parameter
| Jenis: | String |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Kumpulan parameter
BySource
| Position: | 0 |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | True |
| Nilai dari argumen yang tersisa: | False |
-SubscriptionId
Menentukan pengidentifikasi langganan yang didapat cmdlet ini. Secara default, Get-EventSubscriber mendapatkan semua pelanggan peristiwa dalam sesi.
Properti parameter
| Jenis: | Int32 |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
| Alias: | Nomor Identitas |
Kumpulan parameter
ById
| Position: | 0 |
| Wajib: | True |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | True |
| Nilai dari argumen yang tersisa: | False |
CommonParameters
Cmdlet ini mendukung parameter umum: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction, dan -WarningVariable. Untuk informasi selengkapnya, lihat about_CommonParameters.
Input
None
Anda tidak dapat menyalurkan objek ke cmdlet ini.
Output
PSEventSubscriber
Cmdlet ini mengembalikan objek PSEventSubscriber untuk setiap pelanggan peristiwa.
Catatan
cmdlet New-Event, yang membuat peristiwa kustom, tidak menghasilkan pelanggan. Oleh karena itu, cmdlet Get-EventSubscriber tidak akan menemukan objek pelanggan untuk peristiwa ini. Namun, jika Anda menggunakan cmdlet Register-EngineEvent untuk berlangganan peristiwa kustom (untuk meneruskan peristiwa atau menentukan tindakan), Get-EventSubscriber akan menemukan pelanggan yang Register-EngineEvent hasilkan.
Peristiwa, langganan peristiwa, dan antrean peristiwa hanya ada di sesi saat ini. Jika Anda menutup sesi saat ini, antrian peristiwa akan dibuang dan langganan peristiwa dibatalkan.