It is sometimes useful to determine if a remote computer is available. When you attempt to connect
to a remote computer, you will experience a timeout if the computer is not available. This timeout
can be 30 seconds. To avoid this, functions have been developed that ping the computer. If the remote
computer responds to the ping, you attempt the connection. Four such functions are documented below.
The one you select will depend on the operating system and version of WSH you want the program to
require.
The first function requires a 32-bit operating system and WSH 5.1, which comes standard with every Windows
operating system since
Windows 95, if DSClient is installed. This is the function used in the example programs on this web
site. It uses the Run method of the wshShell command to execute the ping command. The output is piped
to a temporary file. The FileSystemObject is used to open the temporary file as a
TextStream object.
If the output indicates that the remote computer responded to the ping, the function returns True.
This function requires that you setup the temporary file ahead of time and delete it when you are
finished. The function is based on a program developed by Alex Angelopoulos and Torgeir Bakken, two
Microsoft MVP's (Most Valuable Professionals) and posted in the newsgroups. Parameters allow you to
specify the number of pings and the timeout in milliseconds.
Ping1.txt <<-- Click here to view or download the program
The second function requires WSH 5.6, which comes standard on Window XP and above. It can be installed
on other operating systems. It uses the Exec method of the wshShell object to execute the ping command.
The output is captured by the StdOut method. This function does not require a temporary file. Parameters
allow you to specify the number of pings and the timeout in milliseconds.
Ping2.txt <<-- Click here to view or download the program
The third function uses the WMI Win32_PingStatus class, which requires Windows XP or above. This
function is based on code in the Microsoft Script Center at the following link:
http://www.microsoft.com/technet/scriptcenter/scripts/hardware/monitor/hwmovb07.mspx
In addition, on Windows XP and Windows Server 2003 computers the Win32_PingStatus class can only
return information on remote computers running IPv4. On Windows Vista and
above the Win32_PingStatus class
can return information on remote computers that have either IPv4 or IPv6 addresses. An IPv4 address
is similar to 192.168.234.122. An IPv6 address is similar to 2010:836B:4179::836B:4179. This function
does not allow you to specify the number of pings or the timeout. The default timeout is 1000
milliseconds.
Ping3.txt <<-- Click here to view or download the program
Finally, Tom Lavedas, a regular in the newsgroups, has revised the first ping program above so it no longer requires a temporary
file. This is a much cleaner solution. However, it does not work on clients with Windows 95 or
Window 98 because the redirection of STDERR is not supported. If you run Ping4.vbs on a Win9x
computer, a zero byte file named &1 is created in the current directory and the function always
returns True. The program should work if the client operating system is Windows NT or above.
Ping4.txt <<-- Click here to view or download the program
In all four programs linked above, note that the ping can be blocked by a firewall, or you may be
asked if the program has your permission to access the Internet.
These programs have been modified so they work on the new operating systems,
like Windows 7, with IPv6.