当前,我的脚本在事件日志中查找HP Smart Array条目的内容,然后执行的操作是发送包含该消息的电子邮件。问题是,如果它在事件日志中检测到与该描述相匹配的条目,则它将从日志中的第一个事件返回消息,这通常是完全不相关的。有人可以建议如何使该消息成为为HP Smart array找到的条目的消息吗?
foreach ($server in $servers) {
$event = Get-EventLog -ComputerName $server -LogName "system" -Newest 200
if ($event.Source.Contains("HP Smart Array") -or $event.Source.Contains("disk")) {
$body += Write-Output "Server $server has an error: " $($event.Message -split '\n')[0] `n
} else {
$body += Write-Output "Server $server has nothing to report `n"
}
}
答案 0 :(得分:2)
问题出在您的if语句上。它将检查直到第一个条目匹配。您需要遍历所有事件。将您的代码更改为:
foreach ($server in $servers) {
$events = Get-EventLog -ComputerName $server -LogName "system" -Newest 200
foreach ($event in $events) {
if ($event.Source.Contains("HP Smart Array") -or $event.Source.Contains("disk")) {
$Message += Write-Output "Server $server has an error: " $($event.Message -split '\n')[0] `n
}
}
if ($null -eq $Message) {
$Message = Write-Output "Server $server has nothing to report `n"
}
$body += $Message
}