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 プロパティで P Standard Edition ventJob の動的モジュールを使用する
この例では、イベント サブスクライバーの Action プロパティの P Standard Edition ventJob オブジェクトで動的モジュールを使用する方法を示します。
最初のコマンドでは、コマンドレットを 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 パラメーターを使用すると、そのアクションを表す P Standard Edition ventJob オブジェクトが返されます。
4 番目のコマンドは、タイマーを有効にします。
5 番目のコマンドでは、コマンドレットをGet-EventSubscriber
使用して Timer.Random イベントのイベント サブスクライバーを取得します。 イベント サブスクライバー オブジェクトを変数に $Subscriber
保存します。
6 番目のコマンドは、イベント サブスクライバー オブジェクトの Action プロパティに P Standard Edition ventJob オブジェクトが含まれていることを示しています。 実際には、コマンドが返したのと同じ P Standard Edition ventJob オブジェクトがRegister-ObjectEvent
含まれています。
7 番目のコマンドは、コマンドレットをFormat-List
使用して、リスト内の Action プロパティの P Standard Edition ventJob オブジェクトのすべてのプロパティを表示します。 その結果、P Standard Edition ventJob オブジェクトに、アクションを実装する動的スクリプト モジュールを含む Module プロパティが含まれていることが明らかになります。
reメイン コマンドは、呼び出し演算子 (&
) を使用してモジュール内のコマンドを呼び出し、$Random変数の値を表示します。 呼び出し演算子を使用すると、エクスポートされないコマンドを含め、モジュール内の任意のコマンドを呼び出すことができます。 この例では、これらのコマンドにより Elapsed イベントが発生したときに生成される乱数が示されます。
モジュールの詳細については、about_Modulesを参照してください。
パラメーター
-Force
このコマンドレットは、すべてのイベント サブスクライバーを取得することを示します。これには、 SupportEvent パラメーター Register-ObjectEvent
、 Register-WmiEvent
および Register-EngineEvent
.
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
このコマンドレットにオブジェクトをパイプすることはできません。
出力
このコマンドレットは、イベント サブスクライバーごとに P Standard Edition ventSubscriber オブジェクトを返します。
メモ
New-Event
カスタム イベントを作成するコマンドレットでは、サブスクライバーは生成されません。 そのため、コマンドレットはこれらの Get-EventSubscriber
イベントのサブスクライバー オブジェクトを見つけることができません。 ただし、コマンドレットを Register-EngineEvent
使用してカスタム イベントをサブスクライブする場合 (イベントを転送したり、アクションを指定したりするために)、 Get-EventSubscriber
生成するサブスクライバーが Register-EngineEvent
見つかります。
イベント、イベント サブスクリプション、およびイベント キューは、現在のセッションにのみ存在します。 現在のセッションを閉じた場合、イベント キューが破棄され、イベント サブスクリプションが取り消されます。
関連リンク
PowerShell
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示