PowerShell Cmdlet - Get-EventSubscriber
 記事記号:[mf1968] 初版:2011/Sep/30

この文書は、Windows PowerShellのヘルプ機能で表示される内容を再構成したものです。

名前
    Get-EventSubscriber
    
概要
    現在のセッションのイベント サブスクライバーを取得します。
    
構文
    Get-EventSubscriber [-SubscriptionId] <int> [[-Force]] [<CommonParameters>]
    
    Get-EventSubscriber [[-SourceIdentifier] <string>] [[-Force]] [<CommonParame
    ters>]
        
説明
    Get-EventSubscriber コマンドレットは、現在のセッションのイベント サブスクラ
    イバーを取得します。
    
    Register event コマンドレットを使用してイベントにサブスクライブすると、イベ
    ント サブスクライバーが Windows PowerShell セッションに追加され、イベントが
    生成されるたびに、サブスクライブしたイベントがイベント キューに追加されます。
    イベント サブスクリプションを取り消す場合は、Unregister-Event コマンドレット
    を使用してイベント サブスクライバーを削除します。
    
パラメーター
    -Force [<SwitchParameter>]
        Register-ObjectEvent、Register-WmiEvent、および Register-EngineEvent の 
        SupportEvent パラメーターを使用して非表示にしたイベントのサブスクライバ
        ーも含め、すべてのイベント サブスクライバーを取得します。
        
        必須                         false
        位置                         2
        既定値                       
        パイプライン入力を許可する   false
        ワイルドカード文字を許可する false
        
    -SourceIdentifier <string>
        指定された SourceIdentifier プロパティ値を持つイベント サブスクライバー
        のみを取得します。既定では、Get-EventSubscriber はセッション内のすべての
        イベント サブスクライバーを取得します。ワイルドカードは使用できません。
        このパラメーターでは、大文字と小文字が区別されます。
        
        必須                         false
        位置                         1
        既定値                       すべてのイベント サブスクライバー
        パイプライン入力を許可する   true (ByPropertyName)
        ワイルドカード文字を許可する false
        
    -SubscriptionId <int>
        指定されたサブスクリプション識別子のみを取得します。既定では、Get-EventS
        ubscriber はセッション内のすべてのイベント サブスクライバーを取得します。
        
        必須                         true
        位置                         1
        既定値                       なし
        パイプライン入力を許可する   true (ByPropertyName)
        ワイルドカード文字を許可する false
        
    <CommonParameters>
        このコマンドレットは、次の共通パラメーターをサポートします: Verbose、
        Debug、ErrorAction、ErrorVariable、WarningAction、WarningVariable、
        OutBuffer、および OutVariable。詳細については、
        「get-help about_commonparameters」と入力してヘルプを参照してください。
    
入力
    なし
        パイプを使用してこのコマンドレットに入力を渡すことはできません。
    
出力
    System.Management.Automation.PSEventSubscriber
        Get-EventSubscriber は各イベント サブスクライバーを表すオブジェクトを返
        します。
        
メモ
    
    
        New-Event コマンドレットはカスタム イベントを作成しますが、サブスクライ
        バーは生成しません。したがって、Get-EventSubscriber コマンドレットがこれ
        らのイベントのサブスクライバー オブジェクトを見つけることはありません。
        ただし、Register-EngineEvent コマンドレットを使用して (イベントの転送や
        アクションの指定を目的として) カスタム イベントにサブスクライブした場合
        には、Get-EventSubscriber は Register-EngineEvent が生成したサブスクライ
        バーを見つけます。
        
        イベント、イベント サブスクリプション、およびイベント キューは、現在のセ
        ッションにのみ存在します。現在のセッションを閉じた場合、イベント キュー
        が破棄され、イベント サブスクリプションが取り消されます。
        
    -------------------------- 例 1 --------------------------
    
    C:\PS>$timer = New-Object Timers.Timer 
    
    C:\PS> $timer | Get-Member -Type Event 
    
    C:\PS> Register-ObjectEvent -inputObject $timer -EventName Elapsed -SourceId
    entifier Timer.Elapsed
    
    C:\PS> Get-EventSubscriber
    
    C:\PS> $timer = New-Object Timers.Timer 
    
    C:\PS> $timer | Get-Member -Type Event 
    
       TypeName: System.Timers.Timer 
    
    Name     MemberType Definition 
    ----     ---------- ---------- 
    Disposed Event      System.EventHandler Disposed(System.Object, System.Event
                        Args) 
    Elapsed  Event      System.Timers.ElapsedEventHandler Elapsed(System.Object, 
                        System.Timers.ElapsedEventArgs)
    
    C:\PS> Register-ObjectEvent -InputObject $timer -EventName Elapsed -SourceId
    entifier Timer.Elapsed
    
    C:\PS> Get-EventSubscriber 
    
    SubscriptionId   : 4 
    SourceObject     : System.Timers.Timer 
    EventName        : Elapsed 
    SourceIdentifier : Timer.Elapsed 
    Action           : 
    HandlerDelegate  : 
    SupportEvent     : False 
    ForwardEvent     : False
    
    説明
    -----------
    この例では、Get-EventSubscriber コマンドを使用して、タイマー イベントのイベ
    ント サブスクライバーを取得します。
    
    最初のコマンドは、New-Object コマンドレットを使用して、タイマー オブジェクト
    のインスタンスを作成します。新しいタイマー オブジェクトを $timer 変数に保存
    します。
    
    2 番目のコマンドは、Get-Member コマンドレットを使用して、タイマー オブジェク
    トに使用可能なイベントを表示します。Get-Member コマンドレットの Type パラメ
    ーターには、Event の値を使用しています。
    
    3 番目のコマンドは、Register-ObjectEvent コマンドレットを使用して、タイマー 
    オブジェクトの Elapsed イベントを登録します。
    
    4 番目のコマンドは、Get-EventSubscriber コマンドレットを使用して、Elapsed イ
    ベントのイベント サブスクライバーを取得します。
    
    -------------------------- 例 2 --------------------------
    
    C:\PS>$timer  = New-Object Timers.Timer
    
    C:\PS> $timer.Interval = 500
    
    C:\PS> Register-ObjectEvent -inputObject $timer -eventName Elapsed -sourceId
    entifier Timer.Random -Action { $random = Get-Random -Min 0 -Max 100 }
    
    Id  Name           State      HasMoreData  Location  Command
    --  ----           -----      -----------  --------  -------
    3   Timer.Random   NotStarted False                  $random = Get-Random ...
    
    C:\PS> $timer.Enabled = $true
    
    C:\PS> $subscriber = Get-EventSubcriber -sourceIdentifer Timer.Random
    
    C:\PS> ($subscriber.action).gettype().fullname
    PSEventJob
    
    C:\PS> $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     : {}
    ...
    
    C:\PS> & $subscriber.action.module {$random}
    96
    
    C:\PS> & $subscriber.action.module {$random}
    23
    
    説明
    -----------
    この例は、イベント サブスクライバーの Action プロパティに格納された PSEventJ
    ob オブジェクトの動的モジュールを使用する方法を示しています。
    
    最初のコマンドは New-Object コマンドレットを使用してタイマー オブジェクトを
    作成します。2 番目のコマンドは、タイマーの間隔を 500 (ミリ秒) に設定します。
    
    3 番目のコマンドは、Register-ObjectEvent コマンドレットを使用して、タイマー 
    オブジェクトの Elapsed イベントを登録します。このコマンドには、イベントを処
    理するアクションが指定されています。タイマーの間隔が経過するたびに、イベント
    が発生し、このアクションに指定されたコマンドが実行されます。ここでは、Get-Ra
    ndom コマンドレットによって、0 〜 100 の乱数が生成されて、$random 変数に保存
    されます。イベントの source 識別子は Timer.Random です。
    
    Register-ObjectEvent コマンドに Action パラメーターを指定すると、そのアクシ
    ョンを表す PSEventJob オブジェクトが返されます。
    
    4 番目のコマンドは、タイマーを有効にします。
    
    5 番目のコマンドは、Get-EventSubscriber コマンドレットを使用して、Timer.Rand
    om イベントのイベント サブスクライバーを取得します。取得したイベント サブス
    クライバー オブジェクトは $subscriber 変数に保存されます。
    
    6 番目のコマンドは、イベント サブスクライバー オブジェクトの Action プロパテ
    ィに、PSEventJob オブジェクトが格納されていることを証明するものです。実際、R
    egister-ObjectEvent コマンドから返されたものと同じ PSEventJob オブジェクトが
    格納されています。
    
    7 番目のコマンドは、Format-List コマンドレットを使用して、Action プロパティ
    に格納されている PSEventJob オブジェクトのプロパティをすべて一覧表示します。
    その結果を見ると、PSEventJob オブジェクトには Module プロパティが存在し、そ
    のプロパティに、アクションを実装する動的スクリプト モジュールが含まれている
    ことがわかります。
    
    残りのコマンドは、呼び出し演算子 (&) を使用し、モジュール内のコマンドを呼び
    出して、$random 変数の値を表示します。呼び出し演算子を使用すると、エクスポ
    ートされないコマンドを含め、モジュール内のコマンドを自由に呼び出すことがで
    きます。ここでは、Elapsed イベントの発生時に生成される乱数を表示しています。
    
    モジュールの詳細については、「about_Modules」を参照してください。
    
関連するリンク
    Online version: http://go.microsoft.com/fwlink/?LinkID=135155
    Register-ObjectEvent 
    Register-EngineEvent 
    Register-WmiEvent 
    Unregister-Event 
    Get-Event 
    New-Event 
    Remove-Event 
    Wait-Event 
    	
記事で解説しているパソコンの環境
 基本ソフト: Windows 7
 キーワード: Windows PowerShell、ヘルプ、Cmdlet、Get-EventSubscriber
ご利用数: 1918658
感想・要望・問い合わせは こちら