2013-04-10 3 views
1

Мне нужно экспортировать журнал событий безопасности Windows в файл CSV для быстрого аудита удаленных файлов. Мне просто нужны конкретные строки информации в моем блоке CSV, особенно в поле «Сообщение». Моя команда ниже:Powershell: как отфильтровать определенный текст?

Get-EventLog "Security" -before 4/10/2013 -InstanceId 4663 | select-object Index,TimeGenerated,Message | export-csv c:\export.csv 

Выход выглядит следующим образом:

Index   : 244336 
TimeGenerated : 4/9/2013 6:06:33 PM 
Message  : An attempt was made to access an object. 

      Subject: 
       Security ID:  S-0-0-00-0000000-0000000-000000 
      37-1111 
       Account Name:  joeblow 
       Account Domain:  contoso 
       Logon ID:  0x888210 

      Object: 
       Object Server: Security 
       Object Type: File 
       Object Name: C:\files\Important_doc.xls 

       Handle ID: 0x2178 

      Process Information: 
       Process ID: 0x4 
       Process Name:  

      Access Request Information: 
       Accesses: %%1537 

       Access Mask: 0x10000 

Все, что мне нужно, это индекс, TimeGenerated, Сообщение-> AccountName и Сообщение-> object-> имя_объекта и Сообщение-> объект тип. Как отфильтровать его, чтобы он выглядел как что-то внизу или что-то достаточно чистое в CSV для просмотра в Excel?

Index   : 244336 
TimeGenerated : 4/9/2013 6:06:33 PM 
Account name : joeblow 
Object type : File 
Object Name : c:\files\Important_doc.xls 

ответ

2

У меня нет лаборатории, чтобы проверить, что запись с сейчас, но попробуйте это:

Get-EventLog "Security" -before 4/10/2013 -InstanceId 4663 | % { 
    New-Object psobject -Property @{ 
     Index = $_.Index 
     TimeGenerated = $_.TimeGenerated 
     "Account Name" = $_.ReplacementStrings[1] 
     "Object Type" = $_.ReplacementStrings[5] 
     "Object Name" = $_.ReplacementStrings[6] 
    } 
} | export-csv c:\export.csv -NoTypeInformation 

В EventLogEntry -объект, есть свойство ReplacementStrings, который обычно содержит все переменные, используемые в сообщение в том порядке, в котором они отображаются в тексте. Первой переменной в этом сообщении является «Идентификатор безопасности», поэтому это скорее всего сохраняется в $_.ReplacementStrings[0], так как массивы начинаются с нуля. Так что просто посчитай свой путь вниз.

+0

Это сработало отлично! Спасибо! – user785179

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