2016-07-13 2 views
0

У меня есть этот скрипт, который берет CSV и серверы ping и сообщает мне свой статус, а затем отправляет мне электронное письмо на те, которые недоступны. Сценарий «Ниже» отлично работает, но единственное, что я хотел бы изменить, - это вместо того, чтобы получать несколько сообщений электронной почты на один недоступный сервер. Я получаю одно электронное письмо, содержащее все серверы, недоступные после того, как он завершил пингование.Один адрес электронной почты для их правильности

Я знаю, что часть проблемы в том, что у меня есть линия электронной почты внутри IF, Else. Поэтому я думал о создании переменной и создании новой строки, но мне нужна помощь, чтобы посмотреть, как это выглядит.

Любая помощь или совет будут оценены. Я пробовал посмотреть на страницу сценария Microsoft и googling.

$hostnamestxt = "C:\Scripts\printers.csv" 
$servers = Import-Csv "$hostnamestxt" 
$date = get-date 

foreach($server in $servers) { 
    $serverName = $server.Name 
    $serverAddress = $server.IP 
    if (test-Connection -ComputerName $serverAddress -Count 2 -Quiet) 
    { 
     write-host "$serverName is ONLINE" -foregroundcolor black -backgroundcolor green 
    } 
    else 
    { 
     write-host "$serverName, $serverAddress is OFFLINE/UNREACHABLE" -foregroundcolor black -backgroundcolor red 
     Send-MailMessage -Body "$serverName, $serverAddress is OFFLINE/UNREACHABLE at $date" -From "emailaddress" -Subject "$serverName, $serverAddress is OFFLINE/UNREACHABLE at $date" -To "emailaddress" -SmtpServer "emailaddress" 
    } 
} 

ответ

0

Вы можете создать пустой массив, а затем добавить имя сервера для автономных устройств, после чего вы отправите электронное письмо. Нечто подобное, вероятно, делать то, что вы ищете:

$servers = Import-Csv -Path "C:\Scripts\printers.csv" 
$date = get-date 
$Array = @() 

foreach ($server in $servers) { 
    $serverName = $server.Name 
    $serverAddress = $server.IP 

     if (test-Connection -ComputerName $serverAddress -Count 2 -Quiet) 
     { 
      write-host "$serverName is ONLINE" -foregroundcolor black -backgroundcolor green 
     } 

     else 
     { 
      write-host "$serverName, $serverAddress is OFFLINE/UNREACHABLE" -foregroundcolor black -backgroundcolor red 
      $Array += $serverName 
     } 
} 

Send-MailMessage -Body "The Following Devices are Offline $Date: $Array" -From "emailaddress" -Subject "Servers Offline $date" -To "emailaddress" -SmtpServer "emailaddress" 
+0

Вы должны переместить 'команду Send-MailMessage' после последнего закрытия' '} в противном случае он получает еще один адрес электронной почты на сервер вниз, и каждое письмо будет включают в себя растущий список серверов вниз (один сервер в первом письме, два сервера во втором и т. д.) – TheMadTechnician

+0

Хороший улов, Ill сейчас редактируется –

+0

Спасибо, Тайлер отлично работает. Хороший улов от TheMadTech. Только лакомый кусочек - это перечисление их один за другим, а с именами принтеров его трудно отличить. – ManNamedDan

Смежные вопросы