PowerShell ICMP Ping with Test-Connection
Ping on Windows 10 is no longer limited to running from the Command Prompt, but ping in the PowerShell offers additional possibilities. The Test Connection cmdlet in PowerShell 7 includes advanced features such as Repeat and Traceroute or as a ping process in the background.

Examples with Test-Connection
The Test Connection cmdlet sends Internet Control Message Protocol (ICMP) Echo request packets to one or more comma-separated remote hosts and returns the Echo responses.
1 2 |
PS C:\> Test-Connection 8.8.8.8, 8.8.4.4, time.google.com |
With the -Repeat option, as is known from Ping, ICMP requests are sent to the specified host until the end of the operation, by entering CTRL+BREAK.
1 2 |
PS C:\> Test-Connection 1.1.1.1 -Repeat |
This example shows how to run a test connection command as a PowerShell background job.
1 2 3 |
PS C:\> $job = Start-Job -ScriptBlock { Test-Connection -TargetName (Get-Content -Path "Servers.txt") } $Results = Receive-Job $job -Wait |
Route Tracking – Traceroute with the test connection in the PowerShell.
The Traceroute parameter introduced in PowerShell 6.0 arranges route tracking between the local computer and the remote destination specified by parameters.
1 2 |
PS C:\> Test-Connection www.google.com -Traceroute -IPv4 |
In another example, parameters are used to customize the Test Connection command. The local computer sends a ping test to a remote computer.
1 2 |
PS C:\> Test-Connection -TargetName Server10 -Count 4 -Delay 2 -MaxHops 128 -BufferSize 256 |
This cmdlet is available from PowerShell 6.0 and later.
Test-Connection TCP Port Parameters
The -TcpPort parameter specifies the TCP port number to the destination to use in the TCP connection test. The cmdlet attempts to establish a TCP connection with the specified port to the destination.
1 2 |
PS C:\> Test-Connection -TargetName isc.org -TcpPort 443 |
If a connection can be established, $True is returned. If a connection cannot be established, $False is returned. The Paramter-TcpPort is available from PowerShell 7.0 and later.
Test-Connection MTU Size Parameters
The -MtuSize parameter is used to determine the path MTU size.
1 2 |
PS C:\> Test-Connection -TargetName ripe.org -MtuSize |
The cmdlet returns a PingReply-MTUSize object that contains the MTU size path to the target, it is available from PowerShell 7.0 and later.
Test-Connection Parameter Quiet
The -Quiet parameter returns a Boolean value. Using this parameter suppresses all errors.
1 2 |
PS C:\> Test-Connection -TargetName iana.org -Quiet |
This cmdlet is available from PowerShell 7.0 and later.
PowerShell Remoting Test-Connection
The next example creates a session to Server2 if at least one of the pings sent to the computer succeeds. To do this, you must configure TrustedHosts on the remote computer.
1 2 |
PS C:\> if (Test-Connection -TargetName Server2 -Quiet) { New-PSSession -ComputerName Server2 } |
To use HTTP for PowerShell remoting, run the following command on the remote host from an administrator-opened (cmd) Command Prompt.
1 2 |
C:\> winrm quickconfig |
The TrustedHosts configuration setting is done by running winrm.cmd with the config/client option on the remote host.
1 2 |
winrm set winrm/config/client @{TrustedHosts="192.168.1.2"} |
Questions of 192.168.1.2 are accepted. The query for the Global Configuration of WinRM is as follows.
1 2 |
C:\> winrm get winrm/config/client |