(Get-EventLog -LogName System | Where-Object {$_.EntryType -eq "Warning"}).count
如果我运行该命令,它会返回所有警告,但我只想提取仅 4 个事件 ID 的计数,例如 1006,1007,455 和 6003。有人可以在这种情况下帮助我吗?
答案 0 :(得分:1)
带有 FilterHashtable 的 Get-Event 可以完成这项工作:
(Get-WinEvent -FilterHashtable @{ logname = 'System'; Level = 3; Id = 1006,1007,455,6003 }).count
级别值:
Comment(or Verbose) 5
Information 4
Warning 3 [int][System.Diagnostics.Eventing.Reader.StandardEventLevel]::Warning
Error 2
Critical 1
LogAlways 0
或者创建一个对象
$Event = @{
Warning = [int][System.Diagnostics.Eventing.Reader.StandardEventLevel]::Warning
Error = [int][System.Diagnostics.Eventing.Reader.StandardEventLevel]::Error
}
$Event.Warning
给出值 3
答案 1 :(得分:0)
你可以使用下面的命令来得到你想要的结果:
(Get-EventLog -LogName System | Where-Object {$_.EntryType -eq "Warning"} | Where-Object {$_.InstanceId -like "1006" -or $_.InstanceId -like "1007" -or $_.InstanceId -like "455"} -or $_.InstanceId -like "6033"}).count
结果将获得您提供的 InstanceId 的计数。
选项 2 - 如果您想查找过去 2 小时内的记录计数,请使用以下命令:
(Get-EventLog -LogName System -After (Get-Date).AddHours(-2) | Where-Object {$_.EntryType -eq "Warning"} | Where-Object {$_.InstanceId -like "1006" -or $_.InstanceId -like "1007" -or $_.InstanceId -like "455"} -or $_.InstanceId -like "6033"}).count