Problembehandlung für WMI-Clientanwendungen
WMI enthält eine Reihe von Klassen für die Problembehandlung Clientanwendungen, die WMI-Anbieter verwenden. Die Problembehandlungs-Ereignisklassen sind an WMI-Ereignisklassen gekoppelt, sodass Sie die Anwendungsausführung mithilfe eines Protokolls mit erfassten Problembehandlungsereignissen nachverfolgen können.
Die folgende Liste enthält Beispiele für Problembehandlungs-Ereignisklassen:
Msft_WmiProvider_ExecMethodAsyncEvent_Pre
Wird ausgelöst, bevor WMI IWbemServices::ExecMethodAsync() auf dem Anbieter aufruft.
Msft_WmiProvider_ExecMethodAsyncEvent_Post
Wird ausgelöst, nachdem WMI IWbemServices::ExecMethodAsync() auf dem Anbieter aufgerufen hat.
Das folgende Verfahren zeigt, wie Sie Probleme mit der Anwendungsausführung beheben.
So richten Sie WMI-Problembehandlung ein
- Erstellen und kompilieren Sie eine MOF-Datei, um den WMI-Protokollierungsereignis-Consumer zu verwenden.
- Führen Sie die Clientanwendung aus.
- Zeigen Sie die Protokolldatei zur Problembehandlung für alle Anbietervorgänge und Fehlerereignisse an, und analysieren Sie das Protokoll, um die clientseitigen Probleme zu diagnostizieren.
Ein weiterer Ansatz zur Problembehandlung besteht darin, die Liste der Anbieter anzuzeigen, die sich derzeit im Computercache befinden, indem MSFT_Providers im Namespace root\cimv2 aufgelistet werden. Es gibt Methoden in dieser Klasse, mit denen Sie Anbieter zu Debug- oder Setupzwecken laden und entladen können.
Im folgenden Codebeispiel wird der WMI-Protokollierungsereignis-Consumer verwendet, um alle Ereignisse der übergeordneten Ereignisklasse zu erfassen und somit alle Anbietervorgangsereignisse zu erfassen.
#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 ;
} ;
Wenn Fehlermeldungen auf einen Fehler beim Laden des Anbieters hinweisen, verwenden Sie MSFT_WmiProvider_LoadOperationFailureEvent, um zu ermitteln, welcher Anbieter den Fehler verursacht hat.
Zugehörige Themen