2016-07-13 9 views
0

私はこのスクリプトを使用してCSVを取得し、サーバにpingを送信し、自分のステータスを伝えてから到達不能なものについて私に電子メールを送ります。下のスクリプトは素晴らしいですが、私が変更したいのは、到達不能なサーバーごとに複数の電子メールを受信するのではなく、pingを完了した後に到達不能なすべてのサーバーを含む1つの電子メールだけです。1つの電子メールでそれらをすべて守る

私はこの問題の一部が、私がIFの中に電子メールの行を持っていることを知っています。だから、私は変数を作成して新しい行を作ることを考えていましたが、そのように見えるように助けが必要です。

何か助けや助言をいただければ幸いです。私はマイクロソフトのスクリプトページを見てみて、やってみた。

$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'コマンドを移動する必要があります。そうしないと、サーバごとに1つのメールが残り、各メールは(最初の電子メールに1台、2台目に2台など) – TheMadTechnician

+0

良いキャッチ、悪い編集 –

+0

Thanks Tyler works great。 TheMadTechの良いキャッチ。ちょっとしたことだけを並べてリストアップしていて、プリンタ名を区別するのは難しいかもしれません。 – ManNamedDan

関連する問題