Test-Connection
将 ICMP 回显请求数据包或 ping 发送到一台或多台计算机。
语法
Test-Connection
[-Ping]
[-IPv4]
[-IPv6]
[-ResolveDestination]
[-Source <String>]
[-MaxHops <Int32>]
[-Count <Int32>]
[-Delay <Int32>]
[-BufferSize <Int32>]
[-DontFragment]
[-TimeoutSeconds <Int32>]
[-TargetName] <String[]>
[-Quiet]
[<CommonParameters>]
Test-Connection
[-Ping]
[-IPv4]
[-IPv6]
[-ResolveDestination]
[-Source <String>]
[-MaxHops <Int32>]
[-Delay <Int32>]
[-BufferSize <Int32>]
[-DontFragment]
[-Continues]
[-TimeoutSeconds <Int32>]
[-TargetName] <String[]>
[-Quiet]
[<CommonParameters>]
Test-Connection
[-IPv4]
[-IPv6]
[-ResolveDestination]
[-TimeoutSeconds <Int32>]
[-TargetName] <String[]>
-MTUSizeDetect
[-Quiet]
[<CommonParameters>]
Test-Connection
[-IPv4]
[-IPv6]
[-ResolveDestination]
[-Source <String>]
[-MaxHops <Int32>]
[-TimeoutSeconds <Int32>]
[-TargetName] <String[]>
-Traceroute
[-Quiet]
[<CommonParameters>]
Test-Connection
[-IPv4]
[-IPv6]
[-ResolveDestination]
[-Source <String>]
[-TimeoutSeconds <Int32>]
[-TargetName] <String[]>
-TCPPort <Int32>
[-Quiet]
[<CommonParameters>]
说明
该 Test-Connection
cmdlet 将 Internet 控制消息协议 (ICMP) 回显请求数据包或 ping 发送到一台或多台远程计算机并返回回显响应答复。 可以使用此 cmdlet 来确定是否可以跨 IP 网络联系特定计算机。
可以使用参数 Test-Connection
指定发送和接收计算机、以后台作业的形式运行命令、设置超时和 ping 数以及配置连接和身份验证。
与熟悉的 ping 命令不同, Test-Connection
返回可在 PowerShell 中调查的 TestConnectionCommand+PingReport 对象。 Quiet 参数为每个测试的连接返回 System.Boolean 对象中的布尔值。 如果测试了多个连接,则返回 布尔值的数组 。
示例
示例 1:将回显请求发送到远程计算机
此示例将来自本地计算机的回显请求数据包发送到 Server01 计算机。
Test-Connection -TargetName Server01 -IPv4
Pinging Server01 [10.59.137.44] with 32 bytes of data:
Reply from 10.59.137.44: bytes=32 time=0ms TTL=128
Reply from 10.59.137.44: bytes=32 time=0ms TTL=128
Reply from 10.59.137.44: bytes=32 time=0ms TTL=128
Reply from 10.59.137.44: bytes=32 time=0ms TTL=128
Ping complete.
Source Destination Replies
------ ----------- -------
Server01 Server01 {System.Net.NetworkInformation.PingReply, System.Net.NetworkInformation ...
Test-Connection
使用 TargetName 参数指定 Server01 计算机。 IPv4 参数指定测试的协议。
当 TestConnectionCommand+PingReport 对象发送到 Success 流时,ping 输出将发送到信息流。 有关输出流的详细信息,请参阅 about_Redirection。
示例 2:向多个计算机发送回显请求
此示例将 ping 从本地计算机发送到多个远程计算机。
Test-Connection -TargetName Server01, Server02, Server12
示例 3:将来自多台计算机的回显请求发送到计算机
此示例将 ping 从不同的源计算机发送到单个远程计算机 Server01。
Test-Connection -Source Server02, Server12, localhost -TargetName Server01
使用此命令格式可从多个点来测试连接的延迟时间。
示例 4:使用参数自定义测试命令
此示例使用用于自定义命令的参数 Test-Connection
。 本地计算机将 ping 测试发送到远程计算机。
Test-Connection -TargetName Server01 -Count 3 -Delay 2 -MaxHops 255 -BufferSize 256
Test-Connection
使用 TargetName 参数指定 Server01。 Count 参数指定将三个 ping 发送到 Server01 计算机,延迟间隔为 2 秒。
如果 ping 响应预计花费的时间比平时长(由于跃点数延长或流量过高的网络条件),可以使用这些选项。
示例 5:以后台作业身份运行测试
此示例演示如何将命令作为 PowerShell 后台作业运行 Test-Connection
。
$job = Start-Job -ScriptBlock { Test-Connection -TargetName (Get-Content "Servers.txt") }
if ($job.JobStateInfo.State -ne "Running") { $Results = Receive-Job $job }
该 Start-Job
命令使用 Test-Connection
cmdlet 对企业中的许多计算机执行 ping 操作。
TargetName 参数的值是从Get-Content
文件中读取计算机名称Servers.txt
列表的命令。 该命令使用 Start-Job
cmdlet 将命令作为后台作业运行,并将作业保存在变量中 $job
。
该 if
命令检查作业是否仍在运行。 如果作业未运行, Receive-Job
请获取结果并将其存储在变量中 $Results
。
示例 6:仅当连接测试成功时创建会话
此示例仅在发送到计算机的 ping 中至少有一个成功时,才在 Server01 计算机上创建会话。
if (Test-Connection -TargetName Server01 -Quiet) {New-PSSession Server01}
该 if
命令使用 Test-Connection
cmdlet 对 Server01 计算机执行 ping 操作。 该命令使用 Quiet 参数,该参数返回 布尔 值,而不是 TestConnectionCommand+PingReport 对象。
该值是 $True
四个 ping 中的任何一个成功。 如果 pings 均未成功,则值为 $False
。
Test-Connection
如果命令返回值$True
,该命令使用 New-PSSession
cmdlet 创建 PSSession。
示例 7:使用 Traceroute 参数
从 PowerShell 6.0 开始, Traceroute 参数映射本地计算机与使用 TargetName 参数指定的远程目标之间的路由。
Test-Connection -TargetName www.microsoft.com -Traceroute | ForEach-Object {
$_ | Format-Table Source, DestinationAddress, DestinationHost
$_.Replies | ForEach-Object {
$_ | Format-Table Hop, ReplyRouterAddress
$_.PingReplies | Format-Table
}
}
Tracing route to www.microsoft.com [96.6.27.90] over a maximum of 128 hops:
1 0 ms 0 ms 0 ms 192.168.0.3 [192.168.0.3]
2 0 ms 0 ms 0 ms 192.168.1.1 [192.168.1.1]
3 3 ms 29 ms 4 ms 96.6.27.90 [96.6.27.90]
Trace complete.
Source DestinationAddress DestinationHost Replies
------ ------------------ --------------- -------
SERVER01 96.6.27.90 www.microsoft.com {, , }
Hop ReplyRouterAddress
--- ------------------
1 192.168.0.3
Status Address RoundtripTime Options Buffer
------ ------- ------------- ------- ------
TtlExpired 192.168.86.1 0 {}
TtlExpired 192.168.86.1 0 {}
TtlExpired 192.168.86.1 0 {}
Hop ReplyRouterAddress
--- ------------------
2 192.168.1.1
Status Address RoundtripTime Options Buffer
------ ------- ------------- ------- ------
TtlExpired 192.168.1.1 0 {}
TtlExpired 192.168.1.1 0 {}
TtlExpired 192.168.1.1 0 {}
Hop ReplyRouterAddress
--- ------------------
3 96.6.27.90
Status Address RoundtripTime Options Buffer
------ ------- ------------- ------- ------
Success 96.6.27.90 3 System.Net.NetworkInformation.PingOptions {97, 98, 99, 100…}
Success 96.6.27.90 2 System.Net.NetworkInformation.PingOptions {97, 98, 99, 100…}
Success 96.6.27.90 4 System.Net.NetworkInformation.PingOptions {97, 98, 99, 100…}
该 Test-Connection
命令使用 Traceroute 参数。 结果(即 [Microsoft.PowerShell.Commands.TestConnectionCommand+TraceRouteResult]
对象)通过管道传递给 ForEach-Object
cmdlet。 ForEach-Object
创建包含 [Microsoft.PowerShell.Commands.TestConnectionCommand+TraceRouteReply]
对象和后续 [System.Net.NetworkInformation.PingReply]
对象的结构化输出。
参数
-BufferSize
指定使用此命令发送的缓冲区的大小,以字节为单位。 默认值为 32。
Type: | Int32 |
Aliases: | Size, Bytes, BS |
Position: | Named |
Default value: | 32 |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Continues
使 cmdlet 持续发送 ping 请求。 此参数不能与 Count 参数一起使用。
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Count
指定要发送的回显请求数。 默认值为 4。
Type: | Int32 |
Position: | Named |
Default value: | 4 |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Delay
指定两次 ping 操作之间的间隔时间,以秒为单位。
Type: | Int32 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-DontFragment
此参数设置 IP 标头中的 “不片段 ”标志。 可以将此参数与 BufferSize 参数配合使用,以测试路径 MTU 大小。 有关 Path MTU 的详细信息,请参阅维基百科中的 Path MTU 发现 文章。
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-IPv4
强制 cmdlet 对测试使用 IPv4 协议。
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-IPv6
强制 cmdlet 使用 IPv6 协议进行测试。
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-MaxHops
设置 ICMP 请求消息可以发送的最大跃点数。 默认值由操作系统控制。 Windows 10的默认值为 128 跃点。
Type: | Int32 |
Aliases: | Ttl, TimeToLive, Hops |
Position: | Named |
Default value: | 128 hops in Windows 10 |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-MTUSizeDetect
此参数用于发现路径 MTU 大小。 该 cmdlet 返回一个 PingReply#MTUSize 对象,该对象包含目标的路径 MTU 大小。 有关 Path MTU 的详细信息,请参阅维基百科中的 Path MTU 发现 文章。
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Ping
使 cmdlet 执行 ping 测试,这是默认操作。
Type: | SwitchParameter |
Position: | Named |
Default value: | Ping test |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Quiet
Quiet 参数在 System.Boolean 对象中返回布尔值。 使用此参数将禁止显示所有错误。
测试的每个连接都会返回 布尔 值。 如果 TargetName 参数指定多台计算机,则返回 布尔 值的数组。
如果 任何 ping 成功, $True
则返回。
如果 所有 pings 都失败, $False
则返回。
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ResolveDestination
使 cmdlet 尝试解析目标的 DNS 名称。
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Source
指定发出 ping 请求的计算机的名称。 请输入以逗号分隔的计算机名称的列表。 默认为本地计算机。
Type: | String |
Position: | Named |
Default value: | Local computer |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-TargetName
指定要测试的计算机。 请键入计算机名称或者以 IPv4 或 IPv6 格式键入 IP 地址。 不允许使用通配符。 此参数是必需的。 ComputerName 是此参数的别名。
Type: | String[] |
Aliases: | ComputerName |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-TCPPort
指定要在 TCP 连接测试中使用的目标上的 TCP 端口号。 该 cmdlet 将尝试与目标上的指定端口建立 TCP 连接。
Type: | Int32 |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-TimeoutSeconds
设置测试的超时值。 如果在超时到期前未收到响应,则测试会失败。 默认值为 5 秒。
此参数是在 PowerShell 6.0 中引入的。
Type: | Int32 |
Position: | Named |
Default value: | 5 seconds |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Traceroute
使 cmdlet 执行跟踪路由测试。 使用此参数时,cmdlet 将返回一个 TestConnectionCommand+TraceRouteResult
对象。
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
输入
None
无法通过管道将输入传递给此 cmdlet。
输出
TestConnectionCommand+PingReport, TestConnectionCommand+TraceRouteResult, Boolean, PingReply
如果指定 Quiet 参数,则返回 布尔 值。 如果测试了多个连接,则返回 布尔值的数组 。 否则, Test-Connection
返回每个 ping 的 TestConnectionCommand+PingReport 对象。