【问题标题】:Powershell: How to pull Event Viewer message and timePowershell:如何拉事件查看器消息和时间
【发布时间】:2021-08-16 15:49:20
【问题描述】:
我正在尝试将用户从安全范围内的注销事件中拉出来。
使用下面的代码我可以提取用户名,但我不确定如何修改它以从事件日志中提取时间?
非常感谢
$events = get-eventlog -logname Security -instanceid 4634 -Newest 5
foreach ($ev in $events) {
$me = $ev.Message -match "(Account Name:).*"
if ($me) {
$matches[0]
}
}
【问题讨论】:
标签:
powershell
event-viewer
【解决方案1】:
我不确定您要做什么。但是,Get-EventLog 已被弃用,取而代之的是 Get-WinEvent,后者更快且具有更好的过滤选项,示例可能如下所示:
$FilterHash = @{
LogName = 'Security'
Id = 4624
}
Get-WinEvent -FilterHashtable $FilterHash -MaxEvents 5 |
ForEach-Object{
If($_.Properties[1].Value -eq $me) {
Write-Host "Account Name : ($_.Properties[1].Value)"
}
}
-FilterHashtable 参数是最受欢迎的,但您也可以在文档中查看 -FilterXPath 和 -FilterXML 参数。
重要提示:就我而言,我没有 4634 个事件。可以通过查看事件查看器中给定日志条目的 XML 视图来确定属性值和数组位置。只需往下看,然后从 0 开始计算数组索引。
另一种方法是仅隔离单个条目并将属性回显到屏幕,然后再次计数以获得正确的索引号。这很重要,因为不同的信息可能在不同的事件等中处于不同的位置。
Get-WinEvent 真的很健壮。我强烈建议您查看文档!