监视Windows甚至记录日志

时间:2018-10-10 07:48:04

标签: powershell

当前,我的脚本在事件日志中查找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"
    }     
}

1 个答案:

答案 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   
}