2017-01-26 2 views
-2

Как извлечь журнал событий Windows в формате CSV? Существует много страниц, объясняющих использование «| export-csv xxxx.csv». Но мне нужен формат файла csv так же, как и извлеченный, когда я выбираю «Сохранить все события как ..» -> «Сохранить как тип = CSV».Извлечь журнал событий Windows в CSV

enter image description here

Есть ли команда для этого? или мне нужно добавить параметры к команде export-csv?

+0

Ну, какая разница в этих форматах CSV? – vonPryz

+1

Ну, сначала вы можете сделать ручной экспорт. проверьте, как выглядит сгенерированный файл csv, затем вы используете командлет Get-EventLog и pipe, чтобы «Выбрать», структурировать вывод так, как вы хотите, чтобы он отображался в файле, а затем передать его в «Export-Csv» – Nkosi

ответ

1

Примечание: В следующем ответе я использовал термин свойства, поскольку это правильная терминология PowerShell, но свойство превратится в столбец в полученном csv.

Проблема вы столкнулись с двояка:

  1. Get-EventLog получает больше информации, чем экспорт в CSV из GUI делает.

Чтобы решить эту проблему вам нужно определить свойства, нужно, глядя на файл CSV, которые являются «Level, дата и время, источник, идентификатор события, Категория задачи»

Существует также последний столбец в экспортированном графическом файле, который не назван, но представляется событием «сообщение».

Затем вам необходимо вырезать данные, предоставленные вам командой PoSH, тому же подмножеству, которое дает вам графический интерфейс.

Это обеспечивается конвейеру информацию в команду Select-Object:

Примечание журнал приложения используется только в качестве примера здесь.

Get-EventLog -LogName Application | Select-Object -Property EntryType,TimeGenerated,Source,EventID,Category,Message 

Порядок свойств здесь важен, так как это будет порядок при экспорте данных в csv.

Это должно предоставить вам соответствующие данные, которые вам нужны в правильном порядке.

  1. Вторая проблема заключается в том, что заголовки столбцов различаются, поскольку GUI и PowerShell имеют разные имена для свойств. например, уровень (из графического интерфейса) и элемент EntryType (из Powershell), вероятно, дает вам правильное базовое имя, которое графический интерфейс преобразует в другой. Если вы хотите изменить имя свойства, вы также можете сделать это с помощью командлета select-object.

Так, чтобы изменить имя EntryType для ярлыка в данных, которые вы можете сделать следующее:

Get-EventLog -LogName Application | Select-Object -Property @{n = 'Label'; e = { $_.Entrytype }} 

Примечание это будет отображаться только свойство Label. Я уменьшил свойства одному для ясности

Чтобы изменить свойство DATETIME, а также этикетки:

Get-EventLog -LogName Application | Select-Object -Property @{n = 'Label'; e = { $_.Entrytype }}, @{n = 'Date and Time'; e = { $_.TimeGenerated }} 

Вы можете следовать этому методу для других свойств.

Чтобы экспортировать данные в csv, теперь вам просто нужно передать результат на экспорт-CSV.Я пропустил код для изменения имен свойств для ясности.

Get-EventLog -LogName Application | Select-Object -Property EntryType,TimeGenerated,Source,EventID,Category,Message | Export-CSV -Path c:\events.csv -NoClobber 

-NoClobber на конце предотвращает Posh положить в некоторых метаданных на первой строке CSV, чтобы помочь ему подтвердить более того, что вы хотите.

Смежные вопросы