我需要在Windows 7事件日志中查看特定错误 - 是否有单行执行此操作?
所以:例如 - 我正在关注'磁盘'错误;所以我可以通过以下方式获取最新事件:
get-eventlog system -source "disk" -after ([datetime]::Today)
(事实上这是另一篇文章的回答:Get-EventLog - easily filter by 'today'?)
但显然我必须继续运行它以保持警惕。
答案 0 :(得分:2)
没有单行。但是,不是轮询 EventLog,您可以使用System.Diagnostic.EventLog
类并使用Register-ObjectEvent cmdlet注册到EntryWritten
事件。
这里是我注册到应用程序日志并在回调中输出消息的示例:
$eventLog = New-Object System.Diagnostics.EventLog "application"
$eventLog.EnableRaisingEvents = $true
$job = Register-ObjectEvent -InputObject $eventLog -EventName "EntryWritten" -Action { Write-Host ($eventArgs.Entry.Message) }
Receive-Job $job
您现在可以使用以下方法测试回调:
$eventLog.Source = "test"
$eventLog.WriteEntry("test")
将test
输出到控制台。
答案 1 :(得分:1)
它不是严格意义上的单行,但你所追求的是tail
事件日志,你可以使用PowerShell执行以下命令:
$lastCheck = [DateTime]::Now.Date
while ($true) {
Get-EventLog System -Source "disk" -After $lastCheck -ErrorAction SilentlyContinue
$lastCheck = [DateTime]::Now.DateTime
Start-Sleep 1
}
如果你更进一步将它包装在一个函数中,那么然后就会变成一个单行:
function Tail-EventLog ($source) {
$lastCheck = [DateTime]::Now.Date
while ($true) {
Get-EventLog System -Source $source -After $lastCheck -ErrorAction SilentlyContinue
$lastCheck = [DateTime]::Now.DateTime
Start-Sleep 1
}
}
您可以执行以下操作:
Tail-EventLog "disk"
您可以将其放在PowerShell Profile中,以确保始终可以使用。