Sends ICMP echo request packets ("pings") to one or more computers.
Syntax
Copy Code | |
---|---|
Test-Connection [-ComputerName] <string[]> [[-Source] <string[]>] [-AsJob] [-Authentication {<Default> | <None> | <Connect> | <Call> | <Packet> | <PacketIntegrity> | <PacketPrivacy> | <Unchanged>}] [-BufferSize <int>] [-Count <int>] [-Credential <PSCredential>] [-Delay <int>] [-Impersonation {<Default> | <Anonymous> | <Identify> | <Impersonate> | <Delegate>}] [-Quiet] [-ThrottleLimit <int>] [-TimeToLive <int>] [<CommonParameters>] |
Description
The Test-Connection cmdlet sends Internet Control Message Protocol (ICMP) echo request packets ("pings") to one or more remote computers and returns the echo response replies. You can use this cmdlet to determine whether a particular computer can be contacted across an Internet Protocol (IP) network.
You can use the parameters of Test-Connection to specify both the sending and receiving computers, to run the command as a background job, to set a timeout and number of pings, and to configure the connection and authentication.
Unlike the traditional "ping" command, Test-Connection returns a Win32_PingStatus object that you can investigate in Windows PowerShell, but you can use the Quiet parameter to force it to return only a Boolean value.
Parameters
-AsJob
Runs the command as a background job.
Note: To use this parameter, the local and remote computers must be configured for remoting and, on Windows Vista and later versions of Windows, you must open Windows PowerShell with the "Run as administrator" option. For more information, see about_Remote_Requirements.
When you use the AsJob parameter, the command immediately returns an object that represents the background job. You can continue to work in the session while the job completes. The job is created on the local computer and the results from remote computers are automatically returned to the local computer. To get the job results, use the Receive-Job cmdlet.
For more information about Windows PowerShell background jobs, see about_Jobs and about_Remote_Jobs.
Required? |
false |
Position? |
named |
Default Value |
False |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-Authentication <AuthenticationLevel>
Specifies the authentication level that is used for the WMI connection. (Test-Connection uses WMI.)
Valid values are:
Unchanged: The authentication level is the same as the previous command.
Default: Windows Authentication.
None: No COM authentication.
Connect: Connect-level COM authentication.
Call: Call-level COM authentication.
Packet: Packet-level COM authentication.
PacketIntegrity: Packet Integrity-level COM authentication.
PacketPrivacy: Packet Privacy-level COM authentication.
Required? |
false |
Position? |
named |
Default Value |
4 |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-BufferSize <int>
Specifies the size, in bytes, of the buffer sent with this command. The default value is 32.
Required? |
false |
Position? |
named |
Default Value |
32 |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-ComputerName <string[]>
Specifies the computers to ping. Type the computer names or type IP addresses in IPv4 or IPv6 format. Wildcard characters are not permitted. This parameter is required.
This parameter does not rely on Windows PowerShell remoting. You can use the ComputerName parameter even if your computer is not configured to run remote commands.
Required? |
true |
Position? |
1 |
Default Value |
|
Accept Pipeline Input? |
true (ByPropertyName) |
Accept Wildcard Characters? |
false |
-Count <int>
Specifies the number of echo requests to send. The default value is 4.
Required? |
false |
Position? |
named |
Default Value |
4 |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-Credential <PSCredential>
Specifies a user account that has permission to perform this action. Type a user name, such as "User01" or "Domain01\User01", or enter a PSCredential object, such as one from the Get-Credential cmdlet.
Required? |
false |
Position? |
named |
Default Value |
Current user |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-Delay <int>
Specifies the interval between pings, in seconds.
Required? |
false |
Position? |
named |
Default Value |
1 (second) |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-Impersonation <ImpersonationLevel>
Specifies the impersonation level to use when calling WMI. (Test-Connection uses WMI.) The default value is "Impersonate".
Valid values are:
Default: Default impersonation.
Anonymous: Hides the identity of the caller.
Identify: Allows objects to query the credentials of the caller.
Impersonate: Allows objects to use the credentials of the caller.
Required? |
false |
Position? |
named |
Default Value |
3 |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-Quiet
Suppresses all errors and returns $True if any pings succeeded and $False if all failed.
Required? |
false |
Position? |
named |
Default Value |
False |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-Source <string[]>
Specifies the names of the computers where the ping originates. Enter a comma-separated list of computer names. The default is the local computer.
Required? |
false |
Position? |
2 |
Default Value |
Local computer |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-ThrottleLimit <int>
Specifies the maximum number of concurrent connections that can be established to run this command. If you omit this parameter or enter a value of 0, the default value, 32, is used.
The throttle limit applies only to the current command, not to the session or to the computer.
Required? |
false |
Position? |
named |
Default Value |
32 |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
-TimeToLive <int>
Specifies the maximum time, in seconds, that each echo request packet ("pings") is active. Enter an integer between 1 and 255. The default value is 80 (seconds). The alias of the TimeToLive parameter is TTL.
Required? |
false |
Position? |
named |
Default Value |
80 |
Accept Pipeline Input? |
false |
Accept Wildcard Characters? |
false |
<CommonParameters>
This command supports the common parameters: Verbose, Debug, ErrorAction, ErrorVariable, OutBuffer, OutVariable, WarningAction, and WarningVariable. For more information, see about_CommonParameters.
Inputs and Outputs
The input type is the type of the objects that you can pipe to the cmdlet. The return type is the type of the objects that the cmdlet returns.
Inputs |
None You cannot pipe input to this cmdlet. |
Outputs |
System.Management.ManagementObject#root\cimv2\Win32_PingStatus, System.Management.Automation.RemotingJob, System.Boolean When you use the AsJob parameter, the cmdlet returns a job object. When you use the Quiet parameter, it returns a Boolean. Otherwise, this cmdlet returns a Win32_PingStatus object for each ping. |
Notes
This cmdlet uses the Win32_PingStatus class. A "Get-WmiObject win32_pingstatus" command is equivalent to a Test-Connection command.
Example 1
Copy Code | |
---|---|
C:\PS>test-connection server01 Source Destination IPV4Address IPV6Address Bytes Time(ms) ------ ----------- ----------- ----------- ----- -------- ADMIN1 Server01 157.59.137.44 32 0 ADMIN1 Server01 157.59.137.44 32 0 ADMIN1 Server01 157.59.137.44 32 0 ADMIN1 Server01 157.59.137.44 32 1 Description ----------- This command sends echo request packets ("pings") from the local computer to the Server01 computer. This command uses the ComputerName parameter to specify the Server01 computer, but omits the optional parameter name. |
Example 2
Copy Code | |
---|---|
C:\PS>test-connection -computername server01, server02, server12 -credential domain01\user01 Description ----------- This command sends pings from the local computer to several remote computers. It uses the Credential parameter to specify a user account that has permission to ping all of the remote computers. |
Example 3
Copy Code | |
---|---|
C:\PS>test-connection -source Server02, Server12, localhost -computername Server01 Description ----------- This command sends pings from different source computers to a single remote computer, Server01. Use this command format to test the latency of connections from multiple points. |
Example 4
Copy Code | |
---|---|
C:\PS>test-connection -computername Server01 -count 3 -delay 2 -TTL 255 -buffersize 256 -throttle 32 Description ----------- This command sends three pings from the local computer to the Server01 computer. It uses the parameters of Test-Connection to customize the command. Use this command format when the ping response is expected to take longer than usual, either because of an extended number of hops or a high-traffic network condition. |
Example 5
Copy Code | |
---|---|
C:\PS>$job = test-connection -computername (get-content servers.txt) -asjob C:\PS> if ($job.jobstateinfo.state -ne "Running") {$results = receive-job $job} Description ----------- This example shows how to run a Test-Connection command as a Windows PowerShell background job. The first command uses the Test-Connection cmdlet to ping many computers in an enterprise. The value of ComputerName parameter is a Get-Content command that reads a list of computer names from the Servers.txt file. The command uses the AsJob parameter to run the command as a background job. The second command checks to see that the job is not still running, and if it is not, it uses a Receive-Job command to get the results and store them in the $results variable. |
Example 6
Copy Code | |
---|---|
C:\PS>test-connection Server55 -credential domain55\user01 -impersonation Identify Description ----------- This command uses the Test-Connection cmdlet to ping a remote computer. The command uses the Credential parameter to specify a user account with permission to ping the remote computer and the Impersonation parameter to change the impersonation level to "Identify". |
Example 7
Copy Code | |
---|---|
C:\PS>if (test-connection -computername Server01 -quiet) {new-pssession Server01} Description ----------- This command creates a PSSession on the Server01 only if at least one of the pings sent to the computer succeeds. The command uses the Test-Connection cmdlet to ping the Server01 computer. The command uses the Quiet parameter, which returns a Boolean value, instead of a Win32_PingStatus object. The value is $True if any of the four pings succeed and is, otherwise, false. If the Test-Connection command returns a value of $True, the command uses the New-PSSession cmdlet to create the PSSession. |