如何为 'get-eventlog' 注册活动?
How to register an event for 'get-eventlog'?
我需要注意我的 Windows 7 事件日志中的特定错误 - 是否有单行代码可以做到这一点?
因此:例如 - 我正在注意 'disk' 错误;这样我就可以通过执行以下操作来获取最新事件:
get-eventlog system -source "disk" -after ([datetime]::Today)
(这是另一个 Post 的答案,事实上: )
但很明显,我必须保留 运行 这个以随时了解任何警报。
这不是严格意义上的单行,但您想要的是 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 以确保它始终可供您使用。
没有单行。但是,您可以使用 System.Diagnostic.EventLog
class 并注册到 EntryWritten
事件 [=26=,而不是 轮询 事件日志] 使用 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
输出到控制台。
我需要注意我的 Windows 7 事件日志中的特定错误 - 是否有单行代码可以做到这一点?
因此:例如 - 我正在注意 'disk' 错误;这样我就可以通过执行以下操作来获取最新事件:
get-eventlog system -source "disk" -after ([datetime]::Today)
(这是另一个 Post 的答案,事实上:
但很明显,我必须保留 运行 这个以随时了解任何警报。
这不是严格意义上的单行,但您想要的是 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 以确保它始终可供您使用。
没有单行。但是,您可以使用 System.Diagnostic.EventLog
class 并注册到 EntryWritten
事件 [=26=,而不是 轮询 事件日志] 使用 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
输出到控制台。