Получить последние журналы событий
Я пытаюсь выяснить, сколько данных генерируется в журналах за последние 24 часа на моем сервере.
Идея заключалась в том, чтобы суммировать размеры файлов, найденные с помощью этой команды:
Get-WinEvent -ListLog * | Where-Object {$_.LastWriteTime -gt ((Get-Date) - (New-TimeSpan -Day 1))} | Format-List -Property LogName, FileSize, LastWriteTime
Проблема с этим в том, что я, похоже, получаю только последний раз, когда он записывал в файл в C:\Windows\System32\winevt\Logs, а не те, которые кажутся в памяти. Я ищу все до второго запуска сценария!
Можете ли вы помочь мне с лучшим методом?
1 ответ
Вам нужно будет прочитать события из журналов, чтобы сделать это:
Get-EventLog -ListLog | Foreach {
$_ | Get-WinEvent { ... processs the events ... }}
К сожалению нет Size
свойство объектов EventLogRecord. Существует метод ToXml(), который вы можете использовать, а затем получить длину сгенерированного XML. Это довольно грубо, хотя. Другим способом было бы сложить размер всех свойств. Поскольку структура объекта фиксирована, вы можете предварительно вычислить размер таких свойств, как bool, int, guid. Однако вам нужно будет определить длину строк во время выполнения.