排查 WMI 客户端应用程序故障
WMI 包含一组类用于对使用 WMI 提供程序的客户端应用程序进行故障排除。 故障排除事件类与 WMI 事件类耦合,因此可以使用捕获的故障排除事件的日志来跟踪应用程序执行。
以下列表包含故障排除事件类的示例:
Msft_WmiProvider_ExecMethodAsyncEvent_Pre
在 WMI 对提供程序调用 IWbemServices::ExecMethodAsync () 前引发。
Msft_WmiProvider_ExecMethodAsyncEvent_Post
在 WMI 对提供程序调用 IWbemServices::ExecMethodAsync () 后引发。
以下过程演示如何对应用程序执行进行故障排除。
设置 WMI 故障排除
- 创建并编译 MOF 文件以使用 WMI 日志记录事件使用者。
- 运行客户端应用程序。
- 查看所有提供程序操作和失败事件的故障排除日志文件,并分析日志以诊断遇到的客户端问题。
另一种故障排除方法是通过枚举 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 来确定导致错误的提供程序。
相关主题