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-Job
やReceive-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 を起動します。
イベント、イベント サブスクリプション、およびイベント キューは、現在のセッションにのみ存在します。 現在のセッションを閉じた場合、イベント キューが破棄され、イベント サブスクリプションが取り消されます。
PowerShell