我有数百个Evtx安全事件日志要根据事件ID解析特定事件ID(4624)和用户名(joe)。我试图使用如下的Powershell cmdlet:
get-winevent -filterhashtable @{Path="mypath.evtx"; providername="securitystuffprovider"; id=4624}
我知道我可以将包含列表的变量传递给我所有evtx文件的Path参数,但我无法根据EVTX的消息子集进行过滤。此外,这需要非常长的时间来解析一个Evtx文件,大约少于150左右。我知道有一个python包来解析Evtx,但是我不确定它是怎么看的,因为python-evtx解析器没有提供导入和使用包本身的很好的例子。我无法将所有数据提取到csv中,因为这会占用太多磁盘空间。关于如何令人惊讶的任何想法。谢谢。
答案 0 :(得分:1)
将-Path
与-FilterXPath
参数一起使用,然后使用XPath表达式进行过滤,如下所示:
$Username = 'jdoe'
$XPathFilter = "*[System[(EventID=4624)] and EventData[Data[@Name='SubjectUserName'] and (Data='$Username')]]"
Get-WinEvent -Path C:\path\to\log\files\*.evtx -FilterXPath $XPathFilter