次の方法で共有


Register-WmiEvent

Windows Management Instrumentation (WMI) イベントにサブスクライブします。

構文

Register-WmiEvent
        [-Namespace <String>]
        [-Credential <PSCredential>]
        [-ComputerName <String>]
        [-Class] <String>
        [-Timeout <Int64>]
        [[-SourceIdentifier] <String>]
        [[-Action] <ScriptBlock>]
        [-MessageData <PSObject>]
        [-SupportEvent]
        [-Forward]
        [-MaxTriggerCount <Int32>]
        [<CommonParameters>]
Register-WmiEvent
        [-Namespace <String>]
        [-Credential <PSCredential>]
        [-ComputerName <String>]
        [-Query] <String>
        [-Timeout <Int64>]
        [[-SourceIdentifier] <String>]
        [[-Action] <ScriptBlock>]
        [-MessageData <PSObject>]
        [-SupportEvent]
        [-Forward]
        [-MaxTriggerCount <Int32>]
        [<CommonParameters>]

説明

Register-WmiEvent コマンドレットは、ローカル コンピューターまたはリモート コンピューター上の Windows Management Instrumentation (WMI) イベントをサブスクライブします。

サブスクライブされた WMI イベントの発生時には、リモート コンピューター上で発生した場合でもローカル セッションのイベント キューに追加されます。 イベント キューのイベントを取得するには、Get-Event コマンドレットを使用します。

のパラメーターを使用して、リモート コンピューター上の Register-WmiEvent イベントをサブスクライブし、キュー内のイベントを識別するのに役立つイベントのプロパティ値を指定できます。 また、Action パラメーターを使用して、サブスクライブされたイベントが発生したときに実行するアクションを指定することもできます。

イベントにサブスクライブするとき、イベント サブスクライバーがセッションに追加されます。 セッションのイベント サブスクライバーを取得するには、Get-EventSubscriber コマンドレットを使用します。 サブスクリプションをキャンセルするには、Unregister-Event コマンドレットを使用します。このコマンドレットは、セッションからイベント サブスクライバーを削除します。

3.0 Windows PowerShell導入された新しい共通情報モデル (CIM) コマンドレットは、WMI コマンドレットと同じタスクを実行します。 CIM コマンドレットは、WS-Management (WSMan) 標準と CIM 標準に準拠しています。これにより、コマンドレットは同じ手法を使用して、Windows オペレーティング システムを実行するコンピューターと他のオペレーティング システムを実行するコンピューターを管理できます。 を使用 Register-WmiEventする代わりに、 Register-CimIndicationEvent コマンドレットの使用を検討してください。

例 1: クラスによって生成されたイベントをサブスクライブする

PS C:\> Register-WmiEvent -Class 'Win32_ProcessStartTrace' -SourceIdentifier "ProcessStarted"

このコマンドは、 Win32_ProcessStartTrace クラスによって生成されたイベントをサブスクライブします。 プロセスが開始されるたびに、このクラスによってイベントが発生します。

例 2: プロセスの作成イベントをサブスクライブする

PS C:\> Register-WmiEvent -Query "select * from __instancecreationevent within 5 where targetinstance isa 'win32_process'" -SourceIdentifier "WMIProcess" -MessageData "Test 01" -TimeOut 500

このコマンドは、クエリを使用して、Win32_process インスタンス作成イベントにサブスクライブします。

例 3: アクションを使用してイベントに応答する

PS C:\> $action = { Get-History | where { $_.commandline -like "*start-process*" } | export-cliXml "commandHistory.clixml" }
PS C:\> Register-WmiEvent -Class 'Win32_ProcessStartTrace' -SourceIdentifier "ProcessStarted" -Action $action
Id    Name            State      HasMoreData   Location  Command
--    ----            -----      -----------   --------  -------
1     ProcessStarted  NotStarted False                   get-history | where {...

この例は、イベントに応えるアクションの使用方法を示しています。 この例では、プロセスが開始されると現在のセッションの Start-Process コマンドが XML ファイルに書き込まれます。

Action パラメーターを使用すると、Register-WmiEvent はイベント アクションを表すバックグラウンド ジョブを返します。 Get-Job や Receive-Job などの Job コマンドレットを使用して、イベント ジョブを管理できます。

詳細については、「about_Jobs」を参照してください。

例 4: リモート コンピューター上のイベントに登録する

PS C:\> Register-WmiEvent -Class 'Win32_ProcessStartTrace' -SourceIdentifier "Start" -Computername Server01
PS C:\> Get-Event -SourceIdentifier "Start"

この例では、Server01 リモート コンピューターのイベントを登録します。

イベントは WMI によってローカル コンピューターに返され、現在のセッションのイベント キューに保存されます。 イベントを取得するには、ローカルの Get-Event コマンドを実行します。

パラメーター

-Action

イベントを処理するコマンドを指定します。 Action パラメーターのコマンドは、イベントキューにイベントを送信するのではなく、イベントが発生したときに実行されます。 コマンドを中かっこ ({ }) で囲み、スクリプト ブロックを作成します。

Action の値には、イベントに関する情報を Action スクリプト ブロックに提供する、$Event、$EventSubscriber、$Sender、$EventArgs、および$Args自動変数を含めることができます。 詳細については、「about_Automatic_Variables」を参照してください。

アクションを指定すると、 Register-WmiEvent はそのアクションを表すイベント ジョブ オブジェクトを返します。 Job 名詞 (Job コマンドレット) を含むコマンドレットを使用して、イベント ジョブを管理できます。

Type:ScriptBlock
Position:101
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Class

サブスクライブするイベントを指定します。 イベントを生成する WMI クラスを入力します。 すべてのコマンドでは 、Class または Query パラメーターが必要です。

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-ComputerName

コマンドを実行するコンピューターの名前を指定します。 既定値はローカル コンピューターです。

コンピューターの NetBIOS 名、IP アドレス、または完全修飾ドメイン名を入力します。 ローカル コンピューターを指定するには、コンピューター名、ドット (.)、または localhost を入力します。

このパラメーターは、Windows PowerShell リモート処理に依存しません。 コンピューターがリモート コマンドを実行するように構成されていない場合でも、ComputerName パラメーターを使用できます。

Type:String
Aliases:Cn
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Credential

この処理を実行するアクセス許可を持つユーザー アカウントを指定します。 既定値は現在のユーザーです。

User01 や Domain01\User01 などのユーザー名を入力するか、 psCredential オブジェクト (Get-Credential コマンドレットによって生成されたものなど) を入力します。 ユーザー名を入力すると、このコマンドレットによってパスワードの入力が求められます。

Type:PSCredential
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Forward

このコマンドレットは、このサブスクリプションのイベントをローカル コンピューター上のセッションに送信することを示します。 このパラメーターは、リモート コンピューターまたはリモート セッションのイベントに登録する場合に使用します。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-MaxTriggerCount

最大トリガー数を指定します。

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-MessageData

このイベント サブスクリプションに関連付けられる任意の追加データを指定します。 このパラメーターの値は、このサブスクリプションに関連付けられているすべてのイベントの MessageData プロパティに表示されます。

Type:PSObject
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Namespace

WMI クラスの名前空間を指定します。

Type:String
Aliases:NS
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Query

WMI イベント クラスを識別する WMI クエリ言語 (WQL) でクエリを指定します (例: select * from __InstanceDeletionEvent)。

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-SourceIdentifier

サブスクリプション用に選択した名前を指定します。 選択した名前は、現在のセッションで一意でなければなりません。 既定値は Windows PowerShell が割り当てた GUID です。

このパラメーターの値は、サブスクライバー オブジェクトおよびこのサブスクリプションに関連付けられたすべてのイベント オブジェクトの SourceIdentifier プロパティの値に表示されます。

Type:String
Position:100
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SupportEvent

このコマンドレットがイベント サブスクリプションを非表示にすることを示します。 このパラメーターは、現在のサブスクリプションがさらに複雑なイベント登録メカニズムの一部であり、単独で検出されない場合に使用します。

SupportEvent パラメーターを使用して作成されたサブスクリプションを表示または取り消すには、Get-EventSubscriber コマンドレットと Unregister-Event コマンドレットの Force パラメーターを指定します。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Timeout

このコマンドが完了するまでWindows PowerShell待機する時間を指定します。

既定値は 0 (ゼロ) で、タイムアウトがないため、Windows PowerShell は無期限に待機します。

Type:Int64
Aliases:TimeoutMSec
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

入力

None

このコマンドレットにパイプを使用してオブジェクトを渡すことはできません。

出力

None

このコマンドレットは出力を生成しません。

メモ

  • Windows Vista 以降のバージョンの Windows オペレーティング システムでこのコマンドレットを使用するには、[管理者として実行] オプションを使用してWindows PowerShellを開始します。

    イベント、イベント サブスクリプション、およびイベント キューは、現在のセッションにのみ存在します。 現在のセッションを閉じた場合、イベント キューが破棄され、イベント サブスクリプションが取り消されます。