次の方法で共有


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 コマンドレットを使用します。このコマンドレットを使用すると、イベント サブスクライバーがセッションから削除されます。

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

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

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

Register-WmiEvent -Class 'Win32_ProcessStartTrace' -SourceIdentifier "ProcessStarted"

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

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

$wmiParameters = @{
  Query = "select * from __instancecreationevent within 5 where targetinstance isa 'win32_process'"
  SourceIdentifier = "WMIProcess"
  MessageData = "Test 01"
  TimeOut = 500
}
Register-WmiEvent @wmiParameters

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

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

$action = { Get-History | where { $_.commandline -like "*start-process*" } | export-cliXml "commandHistory.clixml" }
Register-WmiEvent -Class 'Win32_ProcessStartTrace' -SourceIdentifier "ProcessStarted" -Action $action

Id    Name            State      HasMoreData   Location  Command
--    ----            -----      -----------   --------  -------
1     ProcessStarted  NotStarted False                   get-history | where {...

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

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

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

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

Register-WmiEvent -Class 'Win32_ProcessStartTrace' -SourceIdentifier "Start" -Computername Server01
Get-Event -SourceIdentifier "Start"

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

パラメーター

-Action

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

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

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

型:ScriptBlock
配置:101
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Class

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

型:String
配置:0
規定値:None
必須:True
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-ComputerName

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

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

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

型:String
Aliases:Cn
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Credential

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

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

型:PSCredential
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Forward

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

型:SwitchParameter
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-MaxTriggerCount

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

型:Int32
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-MessageData

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

型:PSObject
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Namespace

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

型:String
Aliases:NS
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Query

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

型:String
配置:0
規定値:None
必須:True
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-SourceIdentifier

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

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

型:String
配置:100
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-SupportEvent

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

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

型:SwitchParameter
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Timeout

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

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

型:Int64
Aliases:TimeoutMSec
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

入力

None

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

出力

None

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

メモ

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

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