WMI アクティビティのトレース
Windows Vista 以降、WMI サービスでは WMI ログ ファイルは使用されていません。 代わりに、Windows イベント トレーシング (ETW) が使用されており、イベントはイベント ビューアーまたは Wevtutil コマンドライン ツールを使用して確認できます。
このトピックでは、以下のセクションについて説明します。
イベント ビューアーを使用した WMI イベントの取得
WMITracing.log ファイルには、WMI がトレースするイベントが含まれています。 ただし、これはバイナリ ファイルです。 これらのイベントを読み取り可能な形式で表示するには、イベント ビューアーを使用します。
既定では、WMI イベントはトレースされません。 この手順では、イベント ビューアーを使用して WMI イベント トレースを有効にし、WMI イベントを検索する方法について説明します。 Wevtutil コマンド ライン ツールを使用して、同じ操作を実行できます。
イベント ビューアーで WMI イベントを表示する方法
- イベント ビューアーを開きます。 [表示] メニューで、[分析およびデバッグ ログの表示] をクリックします。 [Applications and Service Logs] (アプリケーションとサービス ログ) | [Microsoft] | [Windows] | [WMI Activity] (WMI アクティビティ) で、WMI の [トレース] チャネル ログを見つけます。
- [トレース] ログを右クリックし、[ログのプロパティ] を選択します。 [ログを有効にする] チェック ボックスをクリックして、WMI イベント トレースを開始します。 チャネルの詳細については、Windows イベント ログ内のイベント ログとチャネルに関する記事を参照してください。
- WMI イベントは、WMI-Activity のイベント ウィンドウに表示されます。 リスト内のイベントをダブルクリックすると、詳細情報が表示されます。 イベントは、XML ビューまたはフレンドリ ビューの形式で表示できます。
[イベント ID] フィールドには、次の情報を含む値が表示されます。
-
イベント 1
-
特定の操作に関するイベント シーケンスの開始。 シーケンスごとに 1 回出現します。
イベント 1 のイベント フィールドは次のとおりです。
- GroupOperationID は、特定のクライアントに対して報告されるすべてのイベントに使用される一意識別子です。
- OperationId は、操作シーケンスを示します。
- Operation は、WMI への接続または要求を示します。
- User は、スクリプトの実行または CIM Studio の使用によって WMI に要求を行うアカウントを示します。
- Namespace は、接続先の WMI 名前空間を示します。
たとえば、スクリプトによって、Win32_Serviceなど、WMI クラスのすべてのインスタンスを要求できます。 最初の操作としては、WMI への接続などがあります。
-
イベント 2
-
操作を構成するイベント。 シーケンス内で 1 回以上出現します。
イベント 2 のイベント フィールドは次のとおりです。
- GroupOperationID は、イベントが発生するシーケンスを示します。
- GroupOperationID は、イベントが発生するシーケンスを示します。
- ProviderName は、データを提供するプロバイダーの名前を示します。
- Path は、オブジェクトへの WMI パスです。
たとえば、操作には Win32_Service の列挙などがあります。
-
イベント 3
-
特定の操作に関するイベント シーケンスの終了。 シーケンスごとに 1 回出現します。
GroupOperationID のみが表示されます。
コマンド プロンプトでの WMI トレースの有効化
Wevtutil コマンド ライン ツールを使用して WMI イベント トレースを有効にすることもできます。 コマンド Wevtutil.exe sl Microsoft-Windows-WMI-Activity/Trace /e:true を使用します。 WMI イベント ソースは Microsoft-Windows-WMI です。 Wevtutil.exe の詳細については、Windows イベント ログの概要に関する記事を参照してください。
WPP ベースの WMI トレースの使用
Windows Vista 以降の Windows オペレーティング システムでは、WMI はブート プロセス中にアクティブなトレース チャネルを作成します。 そのチャネルの名前は WMI_Trace_Session です。 エラーのみがチャネルに記録されます。
Windows ソフトウェア トレース プリプロセッサ (WPP) は、バイナリ ファイルに情報を記録します。 ファイルを読み取るには、最初に読み取り可能なテキスト形式に変換する必要があります。 Windows Driver Kit (WDK) の tracefmt.exe というツールを使用して変換を行います。 このツールを使用するには、いくつかの関連ファイルに保存されている情報が必要です。 これらのファイルは %SystemRoot%\System32\wbem\tmf ディレクトリ内にあり、ファイル名の拡張子は .tmf です。 このツールには、実際には 1 つの .tmf ファイルが必要です。 その 1 つのファイルを作成するには、すべての .tmf ファイルを連結して新たな 1つの .tmf ファイルにします。 .tmf ファイルの詳細については、「トレース メッセージ フォーマット ファイル」を参照してください。
Windows Driver Kit (WDK) をインストールして tracelog.exe と tracefmt.exe コマンドライン ツールを入手したら、次の手順を実行して WPP ベースの WMI トレースを収集します。
WPP ベースの WMI トレースを表示する方法
1 つの .tmf ファイルを作成するには、管理者特権でのコマンド プロンプト ウィンドウを開き、%SystemRoot%\System32\wbem\tmf ディレクトリに移動します。
copy /y %SystemRoot%\System32\wbem\tmf\*.tmf %SystemRoot%\System32\wbem\tmf\wmi.tmf と入力します。 これにより、他のすべての .tmf ファイルの内容を含む wmi.tmf という名前のファイルが作成されます。
tracelog -flush WMI_Trace_Session と入力します。 これにより、ディスク上の WPP バッファーがフラッシュされます。
set TRACE_FORMAT_PREFIX = [%9!d!]%8!04X!.%3!04X!.%3!04X!::%4!s![%1!s!](%!COMPNAME!:%!FUNC !:%2!s!) と入力します。 tracefmt ツールにより、いくつかの既定の情報が各トレース メッセージに追加されます。 TRACE_FORMAT_PREFIX 環境変数を設定することで、含まれる情報を構成できます。 使用される構文の詳細については、「トレース メッセージ プレフィックス」を参照してください。
tracefmt -tmf %systemroot%\system32\wbem\tmf\wmi.tmf -o OUTPUT.TXT %systemroot%\system32\wbem\logs\WMITracing.log と入力します。 これにより、バイナリ形式から読み取り可能なテキスト形式への変換が実行されます。
notepad %systemroot%\system32\wbem\tmf\OUTPUT.TXT と入力します。 これにより、トレース ファイルがメモ帳で開きます。
実行する必要がある可能性のあるその他の WPP 関連タスクを次に示します。
WPP ベースの WMI トレースを停止する方法
- tracelog -stop WMI_Trace_Session と入力します。
WPP ベースの WMI トレースを開始する方法
- tracelog -start WMI_Trace_Session -guid #1FF6B227-2CA7-40f9-9A66-980EADAA602E -rt -level 5 -flag 0x7 -f MYTRACE.BIN と入力します。
Windows Vista: 既定では、WPP ベースの WMI トレースはレベル 2 (エラー メッセージのみを含む) に設定されています。 情報メッセージも含めるには、レベルを 4 に設定します。 規定では、WMI のすべての領域がトレースされます。 トレースできる領域は、Core (flag=0x1)、ESS (flag=0x2)、Prov (flag=0x4) の 3 種類です。 上記の start コマンドで flag 0x7 を指定すると、3 つすべての領域がトレースされます。
Windows 7: 既定では、WPP ベースの WMI トレースは無効にされており、レベル 0 に設定されています。 WPP ベースの WMI トレースを使用するには、この機能を有効にし、レベル 2 (エラー メッセージのみを含める場合) またはレベル 4 (エラー メッセージと情報メッセージの両方を含める場合) のいずれかに設定する必要があります。
すべての WPP トレース セッションをリストする方法
- tracelog -l と入力します。
WMI WPP トレース セッションに関する情報をリストする方法
- tracelog -l | findstr /i "wmi_trace" と入力します。
WMI WPP トレース セッションのパラメータを表示する方法
- tracelog -q WMI_Trace_Session と入力します。
関連トピック