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

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

我需要将 w32time 事件捕获到文本文件中以满足一个愚蠢的合规性要求。在 Windows 中有没有办法做到这一点?

答案1

快速回答;手动,从事件查看器中单击系统日志,然后转到视图 > 过滤器并W32Time从事件源下拉菜单中选择。按确定。然后转到操作 > 导出列表并输入您的文件名。如果您还想要详细信息,则必须保存整个日志文件,方法是操作 > 将日志文件另存为,然后从保存类型下拉菜单中选择Tab DelimetedComma Separated

长答案是,编写脚本。使用 WMI 查询Win32_NTLogEvent并使用 FileSystemObject 或输出重定向将其假脱机到文件中:

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

高血压

J.

答案2

您没有指定正在运行的 Windows 版本。从 Win2k8 开始,您可以将任务附加到事件,因此可以实现某些自动化。您必须编写一个脚本,然后可以将事件附加到文本文件。不幸的是,这有点繁琐,因为我认为您必须为每个事件 ID 设置它。

另一个选择是设置事件日志监控工具,例如事件哨兵它可以实时监控您的事件日志,并将事件(根据您的规则)记录为多种格式,包括文本文件和数据库。优点是,您的事件日志现在可以实时监控,并且如果需要,它还可以扩展到多台机器。您还可以获得访问其他有用功能的额外好处。

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

答案3

使用 winlogbeat 将您选择的 Windows 日志以所需的通知级别传输到文件或 logstash 服务器。

https://www.elastic.co/beats/winlogbeat

PS:配置文件的缩进一定要准确。YML 格式对每行和子类别前面的空格数有具体要求。

相关内容