2016-07-13 29 views
0

我有這個腳本,需要一個CSV和ping服務器,並告訴我他們的狀態,然後發送給我一個無法訪問的電子郵件。下面的腳本效果很好,但我想改變的唯一事情就是不要每個無法訪問的服務器都收到多封電子郵件。我收到一封郵件,其中包含所有在完成ping之後無法訪問的服務器。一個電子郵件來統治他們全部

我知道問題的一部分是我在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

您需要的最後收盤'}後移動'發送-MailMessage'命令'否則他仍然得到每下降一個服務器的電子郵件,每個電子郵件會包括越來越多的下載服務器列表(第一封電子郵件中的一臺服務器,第二封中的兩臺服務器等等) – TheMadTechnician

+0

好,趕快現在編輯 –

+0

感謝泰勒工作得很好。 TheMadTech良好的捕捉。唯一珍貴的是它一個接一個地列出它們,並且打印機名稱很難區分。 – ManNamedDan

相關問題