次の方法で共有


Register-WmiEvent

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

構文

class (既定)

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

query

Register-WmiEvent
    [-Query] <String>
    [[-SourceIdentifier] <String>]
    [[-Action] <ScriptBlock>]
    [-Namespace <String>]
    [-Credential <PSCredential>]
    [-ComputerName <String>]
    [-Timeout <Int64>]
    [-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: クラスによって生成されたイベントをサブスクライブする

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

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

パラメーターのプロパティ

型:ScriptBlock
規定値:None
ワイルドカードのサポート:False
DontShow:False

パラメーター セット

(All)
配置:101
必須:False
パイプラインからの値:False
プロパティ名別のパイプラインからの値:False
残りの引数からの値:False

-Class

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

パラメーターのプロパティ

型:String
規定値:None
ワイルドカードのサポート:False
DontShow:False

パラメーター セット

class
配置:0
必須:True
パイプラインからの値:False
プロパティ名別のパイプラインからの値:False
残りの引数からの値:False

-ComputerName

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

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

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

パラメーターのプロパティ

型:String
規定値:None
ワイルドカードのサポート:False
DontShow:False
Aliases:Cn

パラメーター セット

(All)
配置:Named
必須:False
パイプラインからの値:False
プロパティ名別のパイプラインからの値:False
残りの引数からの値:False

-Credential

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

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

パラメーターのプロパティ

型:PSCredential
規定値:None
ワイルドカードのサポート:False
DontShow:False

パラメーター セット

(All)
配置:Named
必須:False
パイプラインからの値:False
プロパティ名別のパイプラインからの値:False
残りの引数からの値:False

-Forward

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

パラメーターのプロパティ

型:SwitchParameter
規定値:None
ワイルドカードのサポート:False
DontShow:False

パラメーター セット

(All)
配置:Named
必須:False
パイプラインからの値:False
プロパティ名別のパイプラインからの値:False
残りの引数からの値:False

-MaxTriggerCount

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

パラメーターのプロパティ

型:Int32
規定値:None
ワイルドカードのサポート:False
DontShow:False

パラメーター セット

(All)
配置:Named
必須:False
パイプラインからの値:False
プロパティ名別のパイプラインからの値:False
残りの引数からの値:False

-MessageData

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

パラメーターのプロパティ

型:PSObject
規定値:None
ワイルドカードのサポート:False
DontShow:False

パラメーター セット

(All)
配置:Named
必須:False
パイプラインからの値:False
プロパティ名別のパイプラインからの値:False
残りの引数からの値:False

-Namespace

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

パラメーターのプロパティ

型:String
規定値:None
ワイルドカードのサポート:False
DontShow:False
Aliases:NS

パラメーター セット

(All)
配置:Named
必須:False
パイプラインからの値:False
プロパティ名別のパイプラインからの値:False
残りの引数からの値:False

-Query

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

パラメーターのプロパティ

型:String
規定値:None
ワイルドカードのサポート:False
DontShow:False

パラメーター セット

query
配置:0
必須:True
パイプラインからの値:False
プロパティ名別のパイプラインからの値:False
残りの引数からの値:False

-SourceIdentifier

サブスクリプションに対して選択する名前を指定します。 選択する名前は、現在のセッションで一意である必要があります。 既定値は、Windows PowerShell によって割り当てられる GUID です。

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

パラメーターのプロパティ

型:String
規定値:None
ワイルドカードのサポート:False
DontShow:False

パラメーター セット

(All)
配置:100
必須:False
パイプラインからの値:False
プロパティ名別のパイプラインからの値:False
残りの引数からの値:False

-SupportEvent

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

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

パラメーターのプロパティ

型:SwitchParameter
規定値:None
ワイルドカードのサポート:False
DontShow:False

パラメーター セット

(All)
配置:Named
必須:False
パイプラインからの値:False
プロパティ名別のパイプラインからの値:False
残りの引数からの値:False

-Timeout

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

既定値の 0 (ゼロ) はタイムアウトがないことを意味し、Windows PowerShell は無期限に待機します。

パラメーターのプロパティ

型:Int64
規定値:None
ワイルドカードのサポート:False
DontShow:False
Aliases:TimeoutMSec

パラメーター セット

(All)
配置:Named
必須:False
パイプラインからの値:False
プロパティ名別のパイプラインからの値:False
残りの引数からの値:False

CommonParameters

このコマンドレットでは、一般的なパラメーター -Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction、-WarningVariable の各パラメーターがサポートされています。 詳細については、about_CommonParametersを参照してください。

入力

None

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

出力

None

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

メモ

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

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