powershell - 如何注册 'get-eventlog' 的事件?

标签 powershell event-log

我需要监视 Windows 7 事件日志中的特定错误 - 是否有单行代码可以执行此操作?

所以:例如 - 我正在留意“磁盘”错误;所以我可以通过执行以下操作来获取最新事件:

get-eventlog system  -source "disk" -after ([datetime]::Today)

(实际上这是另一篇帖子的答案:Get-EventLog - easily filter by 'today'?)

但显然我必须继续运行它才能掌握所有警报。

最佳答案

没有一句台词。但是,您可以使用 System.Diagnostic.EventLog 类并注册到 EntryWritten 事件轮询 EventLog > 使用 Register-ObjectEvent cmdlet。

这里是我注册到应用程序日志并仅在回调中输出消息的示例:

$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 输出到控制台。

关于powershell - 如何注册 'get-eventlog' 的事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36551151/

相关文章:

c# - 在非 IEnumerable 类型上使用 lambda 表达式过滤 Windows 日志

powershell - 这些函数定义不一样吗?

powershell - 函数未正确写入控制台

logging - 将事件日志条目保存到 Windows Azure 存储

vb6 - 如何了解更多关于 Application Hang 事件的信息?

c# - 如果每个时间跨度发生/发生超过 N 次,我如何设置 log4net 来记录某些事件?

powershell - 正确编辑变量值

Powershell:抓取http屏幕并将特定行作为变量返回

C# PowerShell - AddScript 作为多个语句

c# - EventLog.WriteEntry 高级信息