Old*_*zer 4 powershell windows-event-log powershell-v3.0
我想过滤某个用户的事件日志,但我认为没有按 SAMID 搜索的选项。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' }
Run Code Online (Sandbox Code Playgroud)

我收到“未找到符合指定选择标准的事件”。用上面的命令。但是,如果我删除UserId密钥,则会返回一长串列表,因此lognameor应该没有问题path。
请改用该-FilterXPath选项!
在以下示例中,我已将计算机seclog.evtx上安全日志中的所有事件保存到桌面上,并使用 SubjectUserSid S-1-5-18( LOCAL SYSTEM)搜索事件:
$events = Get-WinEvent -Path "$HOME\Desktop\seclog.evtx" -FilterXPath '*[EventData[Data[@Name="SubjectUserSid"] = "S-1-5-18"]]'
Run Code Online (Sandbox Code Playgroud)
在脚本中,我可能会选择一个splatting table 来使语句更具可读性(这里仅限于最后 10 个事件):
$seclogSplat = @{
'Path' = "$HOME\Desktop\seclog.evtx"
'FilterXPath' = '*[EventData[Data[@Name="SubjectUserSid"] = "S-1-5-18"]]'
'MaxEvents' = 10
}
$events = Get-WinEvent @seclogSplat
Run Code Online (Sandbox Code Playgroud)
您可以使用以下命令指定多个非排他性条件or:
*[EventData[Data[@Name="SubjectUserSid"] = "S-1-5-18" or Data[@Name="SubjectUserSid"] = "S-1-0-0"]]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5779 次 |
| 最近记录: |