加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

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

发布时间:2020-12-14 00:13:58 所属栏目:Windows 来源:网络整理
导读:我想过滤某个用户的事件日志,但我认为没有选择通过SAMID进行搜索.根据 here,UserId有一个过滤器.以下正确的语法是否正确,以便在下面的屏幕截图中搜索用户? $events = get-winevent -filterhashtable @{ logname='security'; path="Archive-Security-2015-04
我想过滤某个用户的事件日志,但我认为没有选择通过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 "$HOMEDesktopseclog.evtx" -FilterXPath '*[EventData[Data[@Name="SubjectUserSid"] = "S-1-5-18"]]'

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

$seclogSplat = @{
    'Path'        = "$HOMEDesktopseclog.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"]]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读