I decided to give this a go and create a multipinger with powershell... this is my first draft!

if I get time I plan to change it to use jobs instead and then format the results out... but this is a functional first draft..

 

here is the code

 

param ([parameter(mandatory=$true)] [string]$begin, [parameter(mandatory=$true)] [string]$end)

function pingip([string]$firstoct,[string]$secondoct,[string]$thirdoct,[string]$fourthoct)
{
  
 $iptotest = $firstoct + "." + $secondoct + "." + $thirdoct + "." + $fourthoct
 $test = test-connection $iptotest
     
 if ($test.count -gt 0)
 {
     $result =  "$iptotest is alive"
 }
 else
 {
  $result =  "$iptotest is dead"
 }
 
    return $result
}

 

$ErrorActionPreference = "SilentlyContinue"

$ipbegin = $begin.split(".")
$ipend = $end.split(".")
$firstoctetmatch = $false
$secondoctetmatch = $false
$thirdoctetmatch = $false
$fourthoctetmatch = $false

if ($ipbegin[0] -eq $ipend[0])
{
 $firstoctetmatch = $true
}

if ($ipbegin[1] -eq $ipend[1])
{
 $secondoctetmatch = $true
}

if ($ipbegin[2] -eq $ipend[2])
{
 $thirdoctetmatch = $true
}

if ($ipbegin[3] -eq $ipend[3])
{
 $fourthoctetmatch = $true
}

if ($firstoctetmatch -eq $true)
{

 write-host "First Octet Matches"
 $firstoctet = $ipbegin[0]
 if ($secondoctetmatch -eq $true)
 {
  write-host "Second Octet Matches"
  $secondoctet = $ipbegin[1]
  if ($thirdoctetmatch -eq $true)
  {
   write-host "Third Octect Matches"
   $thirdoctet = $ipbegin[2]
   if ($fourthoctetmatch -eq $true)
   {
    write-host "Forth Octet Matches"
    write-host "We are pinging one single IP"
    $pingip = test-connection $begin
    if ($pingip.count -gt 0)
    {
     write-host "$begin is alive"
    }
   }
   else
   {
    write-host "We are pinging a range of IP's"
    [int]$startingnumber = $ipbegin[3]
    [int]$endingnumber = $ipend[3]
    
    if (($startingnumber -eq 0) -or ($endingnumber -eq 255))
    {
     while ($startingnumber -le $endingnumber)
     {
      $fourthoctet = $startingnumber
      pingip $firstoctet $secondoctet $thirdoctet $fourthoctet
      $startingnumber++
     }
    }
    else
    {
     write-host "Invalid Number Detected in either starting number or ending number"
     write-host "Numbers cannot be 0 or 255"
     exit 1
    }
   }
  }
  else
  {
   [int]$thirdoctetstartnumber = $ipbegin[2]
   [int]$thirdoctetendnumber = $ipend[2]
   [int]$fourthoctetstartnumber = $ipbegin[3]
   [int]$fourthoctetendnumber = $ipend[3]
   
   while ($thirdoctetstartnumber -le $thirdoctetendnumber)
   {
    
    $thirdoctet = $thirdoctetstartnumber
    

    if ($thirdoctet -eq $thirdoctetendnumber)
    {
     write-host "last part of the range"
     while ($fourthoctetstartnumber -le $fourthoctetendnumber)
     {
     
      $fourthoctet = $fourthoctetstartnumber
      
      pingip $firstoctet $secondoctet $thirdoctet $fourthoctet
      $fourthoctetstartnumber++
     }
    }
    else
    {
     write-host "loads to do"
     
     while ($fourthoctetstartnumber -le 254)
     {
    
       $fourthoctet = $fourthoctetstartnumber
       
       $fourthoctetstartnumber++
     }
     $fourthoctetstartnumber = 1
    }

    $thirdoctetstartnumber++
   }

  }
 }
    else
    {
           
            [int]$secondoctetstartnumber = $ipbegin[1]
            [int]$secondoctetendnumber = $ipend[1]
            [int]$thirdoctetstartnumber = $ipbegin[2]
   [int]$thirdoctetendnumber = $ipend[2]
   [int]$fourthoctetstartnumber = $ipbegin[3]
   [int]$fourthoctetendnumber = $ipend[3]
    }
}