I created the following script to check some VM’s at home. This script pings all the servers from the CSV file. If a ping has failed, the script will send an e-mail with the servername and ip-address.
If you want to use this script, you have to change/create the following items:
- Create a CSV file with your servers and ip-addresses
- Enter your SMTP Server and e-mail address in the powershell script
- Schedule the powershell script
The CSV file will contain the following information:
ServerName,IpAddress
SERVER1,10.185.1.1
SERVER2,10.185.1.2
The Powershell script:
$servers = "D:\scripts\ps\servers.csv" $csv = Import-CSV $servers $smtpServer = "" foreach($item in $csv){ $server = $item.ServerName $ip = $item.IpAddress $ping = new-object System.Net.NetworkInformation.Ping $rslt = $ping.send($ip) if ($rslt.status.tostring() –eq "Success") { write-host ping worked on $server with $ip -ForegroundColor Green} else { write-host ping failed on $server with $ip -ForegroundColor Red # Send E-Mail $msg = new-object Net.Mail.MailMessage $smtp = new-object Net.Mail.SmtpClient($smtpServer) $msg.From = "@" $msg.To.Add("@") $msg.Subject = "Warning: ping failed on $server" $msg.Body = "The server $server with ip adres $ip does not reply!" $smtp.Send($msg) } } $ping = $null
The source of the ping script: http://theessentialexchange.com/blogs/michael/archive/2007/11/13/checking-server-availability-in-powershell.aspx