Утренние проверки скриптов PowerShell - PullRequest
0 голосов
/ 03 октября 2018

У меня есть скрипт ниже, который я запускаю специально для серверов 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"
    }     
}

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

Добавить еще один 'foreach' для событий:

foreach ($Server in $servers) {
    $events = Get-Eventlog .......
    foreach ($event in $events) {
        if ($event.Source ......
0 голосов
/ 03 октября 2018

Ваша переменная $event содержит количество элементов.Вы не можете сравнить их только с оператором -eq.Вместо этого вы можете использовать метод .Contains().Вот так:

 if ($event.Source.Contains("HP Smart Array") -or $event.Source.Contains("HpCISSs2") -or $event.Source.Contains("disk"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...