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:
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:
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:
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:
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.