我试图在最近5个小时左右的时间内对另一台计算机运行WMI查询以查找错误 . 在运行WMI查询时,您是否至少应该使用where子句过滤初始查询?
我的代码基于从MSDN上的WMI代码创建者生成的样本
这是我正在使用的选择查询
private ManagementScope CreateNewManagementScope(string server)
{
string serverString = @"\\" + server + @"\root\cimv2";
ManagementScope scope = new ManagementScope(serverString);
return scope;
}
ManagementScope scope = CreateNewManagementScope(servername);
scope.Connect();
SelectQuery query = new SelectQuery("select * from Win32_NtLogEvent where TimeWritten > '" + DateTime.Now.AddHours(-5).ToString() + "'");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
ManagementObjectCollection logs = searcher.Get();
int iErrCount = logs.Count;
我只是想了解最近5个小时内的错误 . 它在计算时抛出错误 . 错误是相当模糊的“通用失败” .
[更新 - 现在使用这样的日期]
DateTime d = DateTime.UtcNow.AddHours(-12);
string dateFilter = ManagementDateTimeConverter.ToDmtfDateTime(d);
SelectQuery query = new SelectQuery("select * from Win32_NtLogEvent where Logfile='Application' AND Type='Error' AND TimeWritten > '" + dateFilter + "'");
使用上面的代码我没有得到任何结果,但我可以在事件日志中看到2个错误 . 日期过滤器有什么问题?
1 回答
我做了以下工作以使其发挥作用 . 我希望这有帮助..