首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >导出特定的Windows安全事件日志

导出特定的Windows安全事件日志
EN

Stack Overflow用户
提问于 2016-04-06 00:39:08
回答 1查看 3.2K关注 0票数 1

我需要帮助完成一个PowerShell脚本,在这个脚本中我可以获取特定的安全事件日志并将其导出到CSV文件中。目前,我有这条线,

Get-EventLog -LogName Security 4720,4722,4725 -After ((Get-Date).AddDays(-1)) | Export-CSV "C:\EventLogs.csv"

这确实得到了我想要的安全事件。然而,它提供的资料是不完整的。它不包括这2在输出中,

  1. 帐户名称-进行更改的帐户
  2. 目标帐户-已更改的帐户

是否有办法将上述2项内容包括在内?

我被告知Get更适合这样做,但我对PowerShell脚本相当陌生,所以我非常希望得到一点帮助。谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-06 04:07:26

一般来说,Export-Csv将:

  • 查看第一个输入对象
  • 检查其类型,并根据该类型具有的所有属性确定要导出的列。

但是,在您的示例中,感兴趣的信息可能包含在类型的Message属性中。

因此,您必须使用带有精心编制的哈希表的中间Select-Object调用,以便将感兴趣的信息提取为单独的属性,然后Export-Csv将导出这些属性:

下面是一个从Message属性中提取帐户名称并将其导出为单独列的示例:

代码语言:javascript
复制
Get-EventLog -LogName Security 4720,4722,4725 -After ((Get-Date).AddDays(-1)) |
 Select-Object EventId, Time, @{ 
   n='AccountName';
   e={ ($_.message -replace '\n', ' ') -replace '.*?account name:\t+([^\s]+).*', '$1' } 
 }, @{
   n='TargetAccount';
   e={ ($_.message -replace '\n', ' ') -replace '.*account name:\t+([^\s]+).*', '$1' } 
 } | Export-Csv 'C:\EventLogs.csv'

请注意,传递给-replace的第一个正则表达式是非贪婪的(.*?),这意味着第一个事件将被匹配,而第二个正则表达式是贪婪的(只是.*),这意味着最后一个事件将被匹配。

用空格替换行中断的额外步骤是必要的,因为-replace显然总是逐行匹配。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36439494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档