Bagikan melalui


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 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.

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.