You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用get-eventlog查询安全日志时如何排除指定用户

问题原因

  • 第一种写法错误:你将过滤逻辑写在了Select的计算属性定义块内,该位置仅支持定义新属性的生成规则,无法执行过滤逻辑,完全不会生效。
  • 第二种写法错误:Get-EventLog返回的安全事件原生对象没有username属性,4663事件的关联用户名存储在ReplacementStrings数组的索引1位置,调用不存在的属性自然无法完成过滤。

另外建议将过滤操作放在Select之前执行,不需要处理无用对象,查询性能会更高。

正确实现示例

要排除指定用户的日志,修改后的完整脚本如下:

Get-EventLog -LogName Security -InstanceId 4663 -After (Get-Date).AddMonths(-1) -Before (Get-Date) |
# 先过滤指定用户,完全匹配用 -ne,模糊匹配用 -notlike 配合通配符 *
Where-Object { $_.ReplacementStrings[1] -ne "user" } |
Select-Object TimeWritten, @{Name="Account Name";Expression={ $_.ReplacementStrings[1]}}, @{Name="Object Name";Expression={$_.ReplacementStrings[6]}} |
Export-Csv "archive $(Get-Date -UFormat "%m.%d.%Y").csv" -NoTypeInformation

补充说明

如果需要模糊匹配过滤,比如排除所有用户名以user开头的记录,将过滤条件改为$_.ReplacementStrings[1] -notlike "user*"即可,-notlike运算符需要配合通配符*使用才能实现模糊匹配效果。

内容的提问来源于stack exchange,提问作者NetAdmin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 18:21:03