如何以CSV格式提取Windows事件日志? 有许多页面使用“| export-csv xxxx.csv”解释。 但是当我选择“将所有事件保存为...”时,我需要与提取的csv文件格式相同的格式 - > “另存为类型= CSV”。
有没有命令呢? 或者我是否需要向export-csv命令添加参数?
答案 0 :(得分:1)
注意:在以下答案中,我使用了术语属性,因为这是正确的PowerShell术语,但属性将变为生成的csv中的列。
您遇到的问题有两个:
要解决此问题,您需要通过查看csv文件来识别所需的属性,这些文件包括级别,日期和时间,来源,事件ID,任务类别'
GUI导出文件中还有最后一列未命名,但似乎是事件'消息'。
然后,您需要将PoSH命令提供给您的数据减少到GUI为您提供的相同子集。
通过将信息传递给Select-Object命令来启用此功能:
请注意,此处仅将应用程序日志用作示例。
Get-EventLog -LogName Application | Select-Object -Property EntryType,TimeGenerated,Source,EventID,Category,Message
此处属性的顺序非常重要,因为这是将数据导出到csv时的顺序。
这可以按正确的顺序为您提供所需的相关数据。
因此,要在数据中将名称EntryType更改为Label,您可以执行以下操作:
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,您现在只需将结果通过管道传输到export-CSV。为清楚起见,我省略了更改属性名称的代码。
Get-EventLog -LogName Application | Select-Object -Property EntryType,TimeGenerated,Source,EventID,Category,Message | Export-CSV -Path c:\events.csv -NoClobber
最后的-NoClobber阻止PoSH在csv的第一行放入一些元数据,以帮助它更多地确认你想要的东西。