2010-01-23 14 views
3

WMI를 사용하여 15 분마다 Windows 이벤트 로그를 모니터링하고 최신 로그 이벤트를 가져오고 싶습니다. WQL을 사용하여 쿼리를 수행 할 수 있지만 order by와 같은 키워드는 없습니다. 어떤 아이디어이 문제를 해결하는 방법?wmi를 사용하여 최신 Windows 로그 이벤트 받기

답변

1

데이터 세트를 사용할 수 있습니다. 아래는 vbscript를 사용하고 ComputerName, EventCode 및 Message 필드에만 사용됩니다. 원하는 다른 필드 추가

Const adVarChar = 200 
Const MaxCharacters = 1024 
Const adFldIsNullable = 32 
Set DataList = CreateObject("ADOR.Recordset") 
DataList.Fields.Append "ComputerName", adVarChar, MaxCharacters,adFldIsNullable 
DataList.Fields.Append "EventCode", adVarChar, MaxCharacters,adFldIsNullable 
DataList.Fields.Append "Message",adVarChar,MaxCharacters,adFldIsNullable 
DataList.Open 
strComputer = "." 
strComputer = "." 
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 

Set colLoggedEvents = objWMIService.ExecQuery("Select * from Win32_NTLogEvent Where Logfile = 'Application'") 
For Each evt in colLoggedEvents 
DataList.AddNew 
DataList("ComputerName") = evt.ComputerName 
DataList("EventCode") = evt.EventCode 
DataList("Message") = evt.Message 
DataList.Update 
Next 
'sort by eventcode 
DataList..Sort = "EventCode DESC" 
DataList.MoveFirst 
Do Until DataList.EOF 
Wscript.Echo DataList.Fields.Item("ComputerName") & vbTab & DataList.Fields.Item("EventCode") & vbTab & DataList.Fields.Item("Message") 
DataList.MoveNext 
Loop 
관련 문제