2013-11-13 3 views
2

Я пытаюсь выяснить, сколько данных создано в журналах за последние 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, а не те, которые кажутся в памяти. Я ищу все до второго, сценарий запускается!

Можете ли вы помочь мне с лучшим методом?

+0

Много данных, что? Количество событий? Размер журнала? – bahrep

+0

Извините, я должен был быть более ясным. Я имел в виду размер данных – ringkjob

ответ

3

Вам нужно будет читать события из журналов, чтобы сделать это:

Get-EventLog -ListLog | Foreach { 
    $_ | Get-WinEvent { ... processs the events ... }} 

К сожалению, не Size собственность на объекты EventLogRecord. Существует метод ToXml(), который вы можете использовать, а затем получить длину сгенерированного XML. Это довольно грубо. Другим способом было бы добавить размер всех свойств. Поскольку структура объекта фиксирована, вы можете предварительно вычислить размер таких свойств, как bool, int, guid. Однако вам нужно будет определить длину строк во время выполнения.