A lot of my scripts use Active Directory to create lists of servers. Unfortunately, AD often contains decomissioned computer objects, which can cause certain queries to time-out

I wrote this quick function so that before running WMI queries against a server, we could do a quick check to see whether it was online.

function IsPingable {
    <#
    .SYNOPSIS
    Pings a server and returns TRUE or FALSE.
     
    .DESCRIPTION
    Uses WMI to ping a server, and returns TRUE if a status code of 0 is returned, otherwise returns FALSE. Useful for quick checks to see if a server exists and is online.
     
    .PARAMETER Computer
    The computer's Hostname, FQDN, or IP to be pinged.
 
    .EXAMPLE
    IsPingable -Computer "SERVER01"
 
    Pings SERVER01
     
    .NOTES
    Ben Neise 12/03/13
     
    #>
    param (
      [Parameter(
          Mandatory=$true,
          Position=0
      )]
      [string]$Computer = ""
    )
    $objPing = Get-WmiObject -Class Win32_PingStatus -Filter "Address='$Computer'"
    if ($objPing.StatusCode -eq 0){
        $boolPingable=$true
    }
    else {
        $boolPingable=$false
    }
    Return $boolPingable
}