我想帮助从多个远程服务器获取安全事件日志。我在应用程序和系统日志方面取得了成功,但安全日志太大,无法以相同的方式实现。
以下是我用于成功应用程序日志的内容:
$StartTime = (get-date).adddays(-1)
$Credential = Get-Credential
Get-Content C:\Users\user\Documents\server_list.txt | Foreach-Object{
Get-WinEvent -ComputerName $_ -Credential $Credential -FilterHashTable @{LogName='Application';StartTime=$StartTime}
| ?{$_.LevelDisplayName -eq "Error" -or $_.LevelDisplayName -eq "Warning"}
| select machinename,timecreated,id,level,message
} | Export-Csv "C:\Users\user\Documents\App_logs.csv"
我可以为安全日志创建类似的东西,但是花了10个小时来提取所有安全日志,所以这对我来说不实用。现在我正在尝试过滤它所提取的字段,以便我只获得审计失败,错误和警告。
我找不到使用Get-WinEvent过滤这些属性的方法,以及使用Get-EventLog为安全日志建议的许多其他帖子。
这是我到目前为止所拥有的。第一部分似乎正常工作:
$StartTime = (get-date).adddays(-1)
Get-Content C:\Users\user\Documents\server_list.txt | Foreach-Object{
Get-EventLog Security -ComputerName $_ -After $StartTime -EntryType Error,FailureAudit,Warning
} | Export-Clixml "C:\Users\user\Documents\Test_Sec_logs.xml"
此输出的问题是输出看起来没有以人类可读的方式组织。例如,它拉出的第一个事件将包含大约15行和15列以及全部数据。然后它重复下一个事件。我为它创建了一个数据透视表,但仍然不能轻易打断它。
我接下来试图进一步过滤这个,这是我不希望的工作地点。我现在把它作为一个单独的文件运行,因为当它在一个脚本中都是错误时。
$Seclog = Import-Clixml "C:\Users\user\Documents\Test_Sec_logs.xml"
$Seclog | fl -property EventID, MachineName, Category, EntryType, Message, Source, TimeGenerated, TimeWritten, Username
| Export-Clixml "C:\Users\user\Documents\Test_Sec_logs_filtered.xml"
已创建过滤的XML,但仅显示EventID属性。我想捕获“属性”之后列出的所有字段中的数据。
我赞美任何帮助和建议。提前谢谢。