Назад | Перейти на главную страницу

Сохраняйте события системного журнала Windows в текстовый файл

Мне нужно записывать события w32time в текстовый файл для глупого требования соответствия. Есть ли способ сделать это в Windows?

Быстрый ответ; вручную, в средстве просмотра событий щелкните системный журнал, затем перейдите в меню «Просмотр»> «Фильтр» и выберите W32Time из раскрывающегося списка Источник события. Нажмите ОК. Затем перейдите в «Действие»> «Экспорт списка» и введите свое имя файла. Если вам также нужны подробности, вам нужно будет сохранить весь файл журнала с помощью Action> Save Log File As и выбрать Tab Delimeted или Comma 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

HTH

Дж.

Вы не указали, какая у вас версия Windows. Начиная с Win2k8, вы можете прикреплять задачи к событиям, поэтому возможна некоторая автоматизация. Вам нужно будет написать сценарий, который затем может добавить событие в текстовый файл. К сожалению, это немного утомительно, так как я считаю, что вам придется настраивать это для каждого идентификатора события.

Другой вариант - настроить инструмент мониторинга журнала событий, например EventSentry который может отслеживать ваш журнал событий в реальном времени и регистрировать события (в соответствии с вашими правилами) в различных форматах, включая текстовые файлы и базы данных. Преимущество состоит в том, что ваш журнал событий теперь отслеживается в режиме реального времени, а при необходимости он также масштабируется на несколько компьютеров. Вы также получаете дополнительное преимущество в виде доступа к дополнительным полезным функциям.

Отказ от ответственности: я работаю на netikus.net.

Используйте winlogbeat для передачи выбранных вами журналов Windows с желаемым уровнем уведомлений в файл или на сервер logstash.

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

PS: будьте точны с отступами файла конфигурации. Формат YML зависит от количества пробелов перед каждой строкой и подкатегорией.