1
지난 5 시간 이내에 오류가 발생하여 다른 컴퓨터에 대해 WMI 쿼리를 실행하려고합니다. WMI 쿼리를 실행할 때 적어도 where 절을 사용하여 초기 쿼리를 필터링하면 안됩니까?C# 원격 이벤트 로그를 읽는 WMI
다음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 시간. 카운트를받을 때 오류가 발생합니다. 오류는 다소 모호한 "Generic Failure"입니다.
- 위의 코드와 [갱신과 같이 사용하여 날짜 지금]
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 + "'");
나는 어떤 결과를 얻을 수 없다, 그러나 나는 이벤트 로그에서이 오류를 볼 수 있습니다. 날짜 필터에 문제가 있습니까?
코드가 던지는 오류는 무엇입니까? –
"일반 오류" Win32_NtLogEvent 공급자를 사용하는 방법, 다른 방법으로 Win32_Service 공급자를 사용하여 같은 방식으로 연결하고 잘 작동합니다. – bitshift
WMI가 날짜 형식을 까다롭게 생각하는 것처럼 보일 지 모르지만 결과는 잘못되었습니다. 날짜에 대해서는'var d = DateTimeOffset.Now.AddHours (-5); var wmiDate = String.Format ("{0 : yyyyMMddHHmmss.ffffff} {1}", d, d.Offset.TotalMinutes);'올바른 형식으로 날짜를 가져 오려면. 도움이 될지도 몰라. – Mark