powershell – 如何通过SID过滤Windows安全事件日志?

前端之家收集整理的这篇文章主要介绍了powershell – 如何通过SID过滤Windows安全事件日志?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想过滤某个用户的事件日志,但我认为没有选择通过SAMID进行搜索.根据 here,UserId有一个过滤器.以下正确的语法是否正确,以便在下面的屏幕截图中搜索用户
$events = get-winevent -filterhashtable 
  @{ logname='security'; path="Archive-Security-2015-04-14-02-13-02-299.evtx";
  UserId='S-1-5-21-220523388-838170752-839522115-yyyy' }

我得到“没有找到符合指定选择标准的事件.”用上面的命令.但是如果我删除了UserId键,则会返回一个长列表,因此logname或path应该没有任何问题.

请改用-FilterXPath选项!

在以下示例中,我将所有事件从我的计算机上的安全日志保存到桌面上的seclog.evtx,并使用SubjectUserSid S-1-5-18(本地系统)搜索事件:

$events = Get-WinEvent -Path "$HOME\Desktop\seclog.evtx" -FilterXPath '*[EventData[Data[@Name="SubjectUserSid"] = "S-1-5-18"]]'

在脚本中,我可能会选择splatting表来使语句更具可读性(这里仅限于最后10个事件):

$seclogSplat = @{
    'Path'        = "$HOME\Desktop\seclog.evtx"
    'FilterXPath' = '*[EventData[Data[@Name="SubjectUserSid"] = "S-1-5-18"]]'
    'MaxEvents'   = 10
}
$events = Get-WinEvent @seclogSplat

您可以使用或指定多个非排他性条件:

*[EventData[Data[@Name="SubjectUserSid"] = "S-1-5-18" or Data[@Name="SubjectUserSid"] = "S-1-0-0"]]

猜你在找的Windows相关文章