将Windows系统日志事件捕获到文本文件

我需要将w32time事件捕获到文本文件中以达到愚蠢的合规性要求。 有没有办法在Windows中?

快速回答; 手动从事件查看器,点击系统日志,然后去视图>filter,并从事件源下拉列表中selectW32Time 。 按OK。 然后转到操作>导出列表并input您的文件名。 如果您需要详细信息,则必须使用“操作”>“将日志文件另存为”保存整个日志文件,然后从“另存为types”下拉列表中select“ Tab Delimeted或“ Comma Separated ”。

长的答案是,脚本。 使用WMI查询Win32_NTLogEvent并将其假脱机到FileSystemObject或输出redirect文件:

 On Error Resume Next strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colItems = objWMIService.ExecQuery("Select * from Win32_NTLogEvent WHERE SourceName = 'W32Time'",,48) Dim fso : Set fso = CreateObject("scripting.filesystemobject") Dim ts : Set ts = fso.CreateTextFile("X:\w32time_events.txt", True) For Each objItem in colItems ts.WriteLine "Category: " & objItem.Category ts.WriteLine "CategoryString: " & objItem.CategoryString ts.WriteLine "ComputerName: " & objItem.ComputerName ts.WriteLine "Data: " & objItem.Data ts.WriteLine "EventCode: " & objItem.EventCode ts.WriteLine "EventIdentifier: " & objItem.EventIdentifier ts.WriteLine "EventType: " & objItem.EventType ts.WriteLine "InsertionStrings: " & objItem.InsertionStrings ts.WriteLine "Logfile: " & objItem.Logfile ts.WriteLine "Message: " & objItem.Message ts.WriteLine "RecordNumber: " & objItem.RecordNumber ts.WriteLine "SourceName: " & objItem.SourceName ts.WriteLine "TimeGenerated: " & objItem.TimeGenerated ts.WriteLine "TimeWritten: " & objItem.TimeWritten ts.WriteLine "Type: " & objItem.Type ts.WriteLine "User: " & objItem.User ts.WriteBlankLines 1 Next ts.Close Set ts = Nothing Set fso = Nothing Set colItems = Nothing Set objWMIService = Nothing 

作弊选项,如果你不能打扰; 从cmd命令提示符下,请尝试:

 wmic NTEVENT | find /i "W32Time" > W32Time_Events.txt 

HTH

J.

您没有指定您正在运行的Windows版本。 从Win2k8开始,你可以附加任务到事件,所以一些自动化是可能的。 您将不得不编写一个脚本,然后将该事件追加到文本文件。 不幸的是,由于您必须为每个我相信的事件ID设置起来,所以这有点乏味。

另一个select是设置EventSentry等事件日志监视工具,它可以实时监视事件日志,并根据您的规则将事件logging到各种格式,包括文本文件和数据库。 优点是您的事件日志现在实时监控,如果需要的话,也可以扩展到多台机器。 您还可以获得额外的有用function。

免责声明:我为netikus.net工作。