首页 > 解决方案 > PowerShell 脚本晨检

问题描述

我有以下脚本,专门针对 HP 服务器运行,以识别 Windows 事件日志中是否存在磁盘错误,然后发送一封电子邮件,其中包含来自日志的消息或无需报告。问题是在测试脚本时,当我知道有(如果我可以在日志中看到的东西的来源)时,总是什么都不说要报告,或者它从完全不同的日志中打印出一条消息。

foreach ($Server in $servers) { 
    $event = Get-EventLog -ComputerName $server -LogName "system" -After ([DateTime]::Today)

    if ($event.Source -eq "HP Smart Array" -or $event.Source -eq "HpCISSs2" -or $event.Source -eq "disk") {  
        $body += Write-Output "Server $server has an error $($event.Message)         `n"  ForegroundColor Red
    } else {
        $body += Write-Output "Server $server has nothing to report           `n"
    }     
}

标签: windowspowershell

解决方案


您的$event变量包含元素数量。您不能将它们与-eq运算符进行比较。你可以改用.Contains()方法。像这样:

 if ($event.Source.Contains("HP Smart Array") -or $event.Source.Contains("HpCISSs2") -or $event.Source.Contains("disk"))

推荐阅读