Мне нужно записывать события 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 зависит от количества пробелов перед каждой строкой и подкатегорией.