Share via


WMI クライアント アプリケーションのトラブルシューティング

WMI には、WMI プロバイダーを使用するクライアント アプリケーションのトラブルシューティングを行うためのクラスのセットが含まれています。 トラブルシューティング イベント クラスは WMI イベント クラスと結合されるため、取り込まれたトラブルシューティング イベントのログを使用してアプリケーションの実行を追跡できます。

次の一覧には、トラブルシューティング イベント クラスの例が含まれています。

次の手順は、アプリケーションの実行のトラブルシューティングを行う方法を示しています。

WMI のトラブルシューティングを設定するには

  1. WMI ログ イベント コンシューマーを使用する MOF ファイルを作成してコンパイルします。
  2. クライアント アプリケーションを実行します。
  3. すべてのプロバイダー操作およびエラー イベントのトラブルシューティング ログ ファイルを表示し、ログを分析して、発生しているクライアントの問題を診断します。

もう 1 つのトラブルシューティング方法は、root\cimv2 名前空間に MSFT_Providers を列挙して、現在コンピューター キャッシュ内にあるプロバイダーの一覧を表示することです。 このクラスには、デバッグまたはセットアップの目的でプロバイダーの読み込みとアンロードを行えるメソッドがあります。

次のコード例では、WMI ログ イベント コンシューマーを使用して親イベント クラスのすべてのイベントを取り込み、すべてのプロバイダー操作イベントを取り込みます。

#pragma autorecover
#pragma namespace("\\\\.\\root\\subscription")

instance of __EventFilter as $Filter
{
  Name = "ProviderOperationEvents" ;
  EventNamespace = "root\\cimv2" ;
  Query = "SELECT * FROM MSFT_WmiProvider_OperationEvent" ;
  QueryLanguage = "WQL" ;
} ;

Instance of LogFileEventConsumer as $Consumer
{
  Name = "ProviderOperationEvents" ;
  FileName = "C:\\test.txt" ;
  Text = "Operation - %__TEXT%" ;
} ;

instance of __FilterToConsumerBinding
{
  Filter = $Filter ;
  Consumer = $Consumer ;
  MaintainSecurityContext = TRUE ;
} ;

エラー メッセージがプロバイダーの読み込みエラーを示す場合は、MSFT_WmiProvider_LoadOperationFailureEvent を使用して、エラーの原因となったプロバイダーを特定します。

WMI トラブルシューティング

WMI トラブルシューティング クラス