# encoding: ascii
# api: powershell
# title: ping check using dotNet 
# description: ping check using dotNet ping.  pieced together from existing examples on the web.  Had to use $erroractionpreference = “SilentlyContinue” to make it work on non-existing systems.  Added to DNS check to prevent a few more errors.  This is part of a script that queries an internal db and for every record does a ping to verify its online state
# version: 0.1
# type: function
# author: jkavanagh58
# license: CC0
# x-poshcode-id: 1420
# x-archived: 2009-10-27T22:36:03
#
#
function dnsref ($computername) {
$ErrorActionPreference = "SilentlyContinue"
$testrun=$Null
trap { 
	Write-Host "ERROR: $computername does not exist in DNS" -fore Yellow
	Throw $_ }
$testrun=[net.dns]::GetHostByName($computername) 
if ($testrun -eq $Null){
	Write-Host "No DNS Record" }
else { 
	foreach ($alias in $testrun){
 			PingX($alias.addresslist)
 		}
	}
}
function PingX($ip) {
	$ErrorActionPreference="SilentlyContinue"
	$ping = New-Object System.Net.NetworkInformation.ping
	#trap {$_.Exception.Message ;$pingres = $_Exception.Message; continue}
	if ($_Exception.Message -eq $null) {
	$pingres = ($ping.send($ip)).Status | Out-Null
	Write-Host $computername - $ip is REACHABLE -background "GREEN" -foreground "BLACk"}
	else
	{Write-Host $computername - $ip is NOT reachable  -background "RED" -foreground "BLACk"}
	return $pingres
}
