Get-EventSubscriber
現在のセッションのイベント サブスクライバーを取得します。
構文
Get-EventSubscriber
[[-SourceIdentifier] <String>]
[-Force]
[<CommonParameters>]
Get-EventSubscriber
[-SubscriptionId] <Int32>
[-Force]
[<CommonParameters>]
説明
コマンドレットは Get-EventSubscriber
、現在のセッションのイベント サブスクライバーを取得します。
Register イベント コマンドレットを使用してイベントをサブスクライブすると、Windows PowerShell セッションにイベント サブスクライバーが追加され、サブスクライブ先のイベントは発生するたびにイベント キューに追加されます。 イベント サブスクリプションを取り消すには、 コマンドレットを使用してイベント サブスクライバーを Unregister-Event
削除します。
例
例 1: タイマー イベントのイベント サブスクライバーを取得する
この例では、 コマンドを Get-EventSubscriber
使用して、タイマー イベントのイベント サブスクライバーを取得します。
最初のコマンドでは、 コマンドレットを New-Object
使用してタイマー オブジェクトのインスタンスを作成します。 新しいタイマー オブジェクトを 変数に $Timer
保存します。
2 番目のコマンドでは、 コマンドレットを Get-Member
使用して、タイマー オブジェクトで使用できるイベントを表示します。 コマンドでは、 コマンドレットの Type パラメーターを使用し Get-Member
、値が Event です。
$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
3 番目のコマンドでは、 コマンドレットを Register-ObjectEvent
使用して、タイマー オブジェクトの Elapsed イベントに登録します。
4 番目のコマンドでは、 コマンドレットを Get-EventSubscriber
使用して 、Elapsed イベントのイベント サブスクライバーを取得します。
例 2: イベント サブスクライバーの Action プロパティで PSEventJob で動的モジュールを使用する
この例では、イベント サブスクライバーの Action プロパティの PSEventJob オブジェクトで動的モジュールを使用する方法を示します。
最初のコマンドでは、 コマンドレットを New-Object
使用してタイマー オブジェクトを作成します。 2 番目のコマンドは、タイマーの間隔を 500 (ミリ秒) に設定します。
$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}
3 番目のコマンドでは、 コマンドレットを Register-ObjectEvent
使用してタイマー オブジェクトの Elapsed イベントを登録します。 このコマンドには、イベントを処理するアクションが含まれています。 タイマーの間隔が経過するたびに、イベントが発生してアクション内のコマンドが実行されます。 この場合、コマンドレットは Get-Random
0 から 100 の間の乱数を生成し、変数に $Random
保存します。 イベントのソース識別子は Timer.Random です。
コマンドで Register-ObjectEvent
Action パラメーターを使用すると、アクションを表す PSEventJob オブジェクトが返されます。
4 番目のコマンドは、タイマーを有効にします。
5 番目のコマンドでは、 コマンドレットを Get-EventSubscriber
使用して Timer.Random イベントのイベント サブスクライバーを取得します。 イベント サブスクライバー オブジェクトを 変数に $Subscriber
保存します。
6 番目のコマンドは、イベント サブスクライバー オブジェクトの Action プロパティに PSEventJob オブジェクトが含まれていることを示しています。 実際には、コマンドが返したのと同じ PSEventJob オブジェクトが Register-ObjectEvent
含まれています。
7 番目のコマンドでは、 コマンドレットを Format-List
使用して、一覧の Action プロパティ内の PSEventJob オブジェクトのすべてのプロパティを表示します。 その結果、 PSEventJob オブジェクトに、アクションを実装する動的スクリプト モジュールを含む Module プロパティが含まれていることが明らかになります。
残りのコマンドでは、呼び出し演算子 (&
) を使用してモジュール内のコマンドを呼び出し、$Random変数の値を表示します。 呼び出し演算子を使用すると、エクスポートされないコマンドを含め、モジュール内の任意のコマンドを呼び出すことができます。 この例では、これらのコマンドにより Elapsed イベントが発生したときに生成される乱数が示されます。
モジュールの詳細については、「 about_Modules」を参照してください。
パラメーター
-Force
このコマンドレットは、および Register-EngineEvent
の SupportEvent パラメーターRegister-ObjectEvent
Register-WmiEvent
を使用して非表示になっているイベントのサブスクライバーを含め、すべてのイベント サブスクライバーを取得することを示します。
Type: | SwitchParameter |
Position: | 1 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SourceIdentifier
イベント サブスクライバーのみを取得する SourceIdentifier プロパティ値を指定します。 既定では、 Get-EventSubscriber
はセッション内のすべてのイベント サブスクライバーを取得します。 ワイルドカードは使用できません。 このパラメーターでは、大文字と小文字が区別されます。
Type: | String |
Position: | 0 |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-SubscriptionId
このコマンドレットが取得するサブスクリプション識別子を指定します。 既定では、 Get-EventSubscriber
はセッション内のすべてのイベント サブスクライバーを取得します。
Type: | Int32 |
Aliases: | Id |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
入力
None
パイプを使用してこのコマンドレットに入力を渡すことはできません。
出力
Get-EventSubscriber
は、各イベント サブスクライバーを表す オブジェクトを返します。
メモ
カスタム イベントを作成する コマンドレットでは New-Event
、サブスクライバーは生成されません。 したがって、コマンドレットは Get-EventSubscriber
、これらのイベントのサブスクライバー オブジェクトを見つけることができません。 ただし、 コマンドレットを Register-EngineEvent
使用して (イベントを転送したり、アクションを指定したりするために) Get-EventSubscriber
カスタム イベントをサブスクライブすると、生成されるサブスクライバーが Register-EngineEvent
見つかります。
イベント、イベント サブスクリプション、およびイベント キューは、現在のセッションにのみ存在します。 現在のセッションを閉じた場合、イベント キューが破棄され、イベント サブスクリプションが取り消されます。