PowerShell如何提取事件查看器中的事件消息与对应时间信息
你可以直接调用事件对象自带的TimeGenerated属性获取事件触发时间,不需要从日志消息中额外解析,修改后的代码如下:
$events = Get-EventLog -LogName Security -InstanceId 4634 -Newest 5 foreach ($ev in $events) { if ($ev.Message -match "Account Name:\s*(\S+)") { # 输出格式化后的时间与对应账户名 [PSCustomObject]@{ 注销时间 = $ev.TimeGenerated.ToString("yyyy-MM-dd HH:mm:ss") 账户名 = $matches[1] } } }
补充说明:
- 正则规则做了小调整,直接提取账户名的具体值,避免输出多余的
Account Name:前缀,你如果需要保留原格式可以改回原来的匹配规则 - 用自定义对象整理输出结果,后续如果需要导出为CSV文件可以直接追加
| Export-Csv -Path 注销日志.csv -Encoding UTF8 -NoTypeInformation即可 - 如果你需要获取日志写入系统的时间而非事件实际触发的时间,把属性
TimeGenerated替换为TimeWritten即可
内容的提问来源于stack exchange,提问作者AJPearson
相关产品推荐
相关产品推荐

