June 10 2009

Nifty Powershell script to ping multiple servers

This great Powershell script will ping all machines listed in a text file and put the live results into a Excel workbook:

$erroractionpreference = "SilentlyContinue"
$a = New-Object -comobject Excel.Application
$a.visible = $True
$b = $a.Workbooks.Add()
$c = $b.Worksheets.Item(1)
$c.Cells.Item(1,1) = "Machine Name"
$c.Cells.Item(1,2) = "Ping Status"
$d = $c.UsedRange
$d.Interior.ColorIndex = 19
$d.Font.ColorIndex = 11
$d.Font.Bold = $True
$d.EntireColumn.AutoFit($True)
$intRow = 2
$colComputers = get-content C:\temp\server_list.txt
foreach ($strComputer in $colComputers)
{
$c.Cells.Item($intRow, 1) = $strComputer.ToUpper()
# This is the key part
$ping = new-object System.Net.NetworkInformation.Ping
$Reply = $ping.send($strComputer)
if ($Reply.status -eq "Success")
{
$c.Cells.Item($intRow, 2) = "Resolved & active"
}
elseif ($Reply.status -eq "TimedOut")
{
$c.Cells.Item($intRow, 2) = "Resolved host but timed out"
}
else
{
$c.Cells.Item($intRow, 2) = "Unable to resolve"
}
$Reply = ""
$intRow = $intRow + 1
}
$d.EntireColumn.AutoFit()

 



----------------------------------------------------------------------------
I use a maximum of one Google Ad per post to help offset some of my blog hosting costs.

----------------------------------------------------------------------------


Tags: , , , ,

Posted June 10, 2009 by danovich in category "Powershell", "Tools", "Windows

4 COMMENTS :

  1. By danovich (Post author) on

    I’ve updated this script to provide 3 different responses – “Resolved & active”, “Resolved host but timed out” and “Unable to resolve”.

    This is a great reference – http://blog.usepowershell.com/2009/02/exploring-the-net-framework-with-powershell-calling-a-method-part-2a/

    New Powershell script is:

    $erroractionpreference = “SilentlyContinue”
    $a = New-Object -comobject Excel.Application
    $a.visible = $True
    $b = $a.Workbooks.Add()
    $c = $b.Worksheets.Item(1)
    $c.Cells.Item(1,1) = “Machine Name”
    $c.Cells.Item(1,2) = “Ping Status”
    $d = $c.UsedRange
    $d.Interior.ColorIndex = 19
    $d.Font.ColorIndex = 11
    $d.Font.Bold = $True
    $d.EntireColumn.AutoFit($True)
    $intRow = 2
    $colComputers = get-content C:\temp\server_list.txt
    foreach ($strComputer in $colComputers)
    {
    $c.Cells.Item($intRow, 1) = $strComputer.ToUpper()
    # This is the key part
    $ping = new-object System.Net.NetworkInformation.Ping
    $Reply = $ping.send($strComputer)
    if ($Reply.status -eq “Success”)
    {
    $c.Cells.Item($intRow, 2) = “Resolved & active”
    }
    elseif ($Reply.status -eq “TimedOut”)
    {
    $c.Cells.Item($intRow, 2) = “Resolved host but timed out”
    }
    else
    {
    $c.Cells.Item($intRow, 2) = “Unable to resolve”
    }
    $Reply = “”
    $intRow = $intRow + 1
    }
    $d.EntireColumn.AutoFit()

    Reply
  2. By mahesh on

    Hi,
    can u attach the smtp server script.so that Excel file will go to the reciepient

    Reply
  3. By danovich (Post author) on

    Hi Mahesh – That is pretty easy to do. If you require billable consulting, my details are available in the Contact page.

    Reply
  4. Pingback: Powershell script to ping and check ports 80 & 443 | - danovich.com.au -

Leave a Reply