Tricks with Test-Connection

Learning to use Test-Connection properly opens up a whole new world of capabilities in your PowerShell scripts

Don Jones

February 1, 2012

1 Min Read
ITPro Today logo

Writing a script that will connect to another computer, perhaps via WMI or PowerShell Remoting? It might make sense to "ping" the computer first, as a quick check to see if it's even reachable.

The Test-Connection cmdlet utilizes the same ICMP protocol as Ping.exe; it's implemented by having the shell query the local computer's Win32_PingStatus WMI class. WMI needn't be running or enabled on the remote computer, though.

The easiest usage is:

Test-Connection -computername SERVER1


This actually returns several result objects. Those objects have, amongst other things, a StatusCode property which is set to 0 when the ping was successful. Sometimes, that's all you care about, in which case this is a lot easier:

Test-Connection -computer SERVER1 -quiet


The result of that is a simple True/False, which is much easier to stick into an If construct. However, you need to be a bite careful in how you use this. When set to -Quiet mode, Test-Connection doesn't return the computer name - it's JUST a True/False. So this won't work well:

Test-Connection -quiet -computer (Get-Content names.txt) | ForEach { # do something }


The problem is that Test-Connection is only outputting True/False, so that's all ForEach-Object will have to work with. You don't have any computer names at that point! A better approach:

Test-Connection -count 1 -computer (Get-Content names.txt) | ForEach { # do something with $_.Address }


This assumes Names.txt contains computer names or IP addresses, one per line. The -count parameter is needed so that each computer is only pinged once, generating only one result - otherwise, by default, each computer will generate 4 results! That could be problematic since ForEach will be executing its script block one time for each of those results.

Sign up for the ITPro Today newsletter
Stay on top of the IT universe with commentary, news analysis, how-to's, and tips delivered to your inbox daily.

You May Also Like