Test-Connection

将 ICMP 回显请求数据包或 ping 发送到一台或多台计算机。

语法

Test-Connection
    [-TargetName] <string[]>
    [-Ping]
    [-IPv4]
    [-IPv6]
    [-ResolveDestination]
    [-Source <string>]
    [-MaxHops <int>]
    [-Count <int>]
    [-Delay <int>]
    [-BufferSize <int>]
    [-DontFragment]
    [-TimeoutSeconds <int>]
    [-Quiet]
    [<CommonParameters>]
Test-Connection
    [-TargetName] <string[]>
    -Repeat
    [-Ping]
    [-IPv4]
    [-IPv6]
    [-ResolveDestination]
    [-Source <string>]
    [-MaxHops <int>]
    [-Delay <int>]
    [-BufferSize <int>]
    [-DontFragment]
    [-TimeoutSeconds <int>]
    [-Quiet]
    [<CommonParameters>]
Test-Connection
    [-TargetName] <string[]>
    -MtuSize
    [-IPv4]
    [-IPv6]
    [-ResolveDestination]
    [-TimeoutSeconds <int>]
    [-Quiet]
    [<CommonParameters>]
Test-Connection
    [-TargetName] <string[]>
    -Traceroute
    [-IPv4]
    [-IPv6]
    [-ResolveDestination]
    [-Source <string>]
    [-MaxHops <int>]
    [-TimeoutSeconds <int>]
    [-Quiet]
    [<CommonParameters>]
Test-Connection
    [-TargetName] <string[]>
    -TcpPort <int>
    [-IPv4]
    [-IPv6]
    [-ResolveDestination]
    [-Source <string>]
    [-TimeoutSeconds <int>]
    [-Quiet]
    [<CommonParameters>]

说明

Test-Connection cmdlet 将 Internet 控制消息协议 (ICMP) 回显请求数据包或 ping 发送到一台或多台远程计算机,并返回回显响应答复。 可以使用此 cmdlet 来确定是否可以跨 IP 网络联系特定计算机。

可以使用 Test-Connection 参数来指定发送和接收计算机、将命令作为后台作业运行、设置超时和 ping 数以及配置连接和身份验证。

与熟悉的 ping 命令不同, Test-Connection 返回可在 PowerShell 中调查的 TestConnectionCommand+PingStatus 对象。 Quiet 参数为每个测试的连接返回 System.Boolean 对象中的布尔值。 如果测试了多个连接,将返回 布尔 值数组。

示例

示例 1:将回显请求发送到远程计算机

本示例将来自本地计算机的回显请求数据包发送到 Server01 计算机。

Test-Connection -TargetName Server01 -IPv4

Destination: Server01

Ping Source           Address                   Latency BufferSize Status
                                                   (ms)        (B)
---- ------           -------                   ------- ---------- ------
   1 ADMIN1           10.59.137.44                   24         32 Success
   2 ADMIN1           10.59.137.44                   39         32 Success
   3 ADMIN1           *                               *          * TimedOut
   4 ADMIN1           10.59.137.44                   28         32 Success

Test-Connection 使用 TargetName 参数指定 Server01 计算机。 IPv4 参数指定测试的协议。

一系列 TestConnectionCommand+PingStatus 对象将发送到输出流,每个 ping 回复一个对象来自目标计算机。

示例 2:向多个计算机发送回显请求

本示例将 ping 从本地计算机发送到多个远程计算机。

Test-Connection -TargetName Server01, Server02, Server12

示例 3:使用参数自定义测试命令

此示例使用用于自定义命令的参数 Test-Connection 。 本地计算机将 ping 测试发送到远程计算机。

Test-Connection -TargetName Server01 -Count 3 -Delay 2 -MaxHops 255 -BufferSize 256

Test-Connection 使用 TargetName 参数指定 Server01。 Count 参数指定将三个 ping 发送到 Server01 计算机,延迟间隔为 2 秒。

当 ping 响应预期花费的时间比平时长(因为跃点数延长或高流量网络条件)时,可以使用这些选项。

示例 4:将测试作为后台作业运行

此示例演示如何以 PowerShell 后台作业的形式运行 Test-Connection 命令。

$job = Start-Job -ScriptBlock { Test-Connection -TargetName (Get-Content -Path "Servers.txt") }
$Results = Receive-Job $job -Wait

Start-Job 命令使用 Test-Connection cmdlet 对企业中的许多计算机执行 ping 操作。 TargetName 参数的值是从Get-Content文件读取计算机名称Servers.txt列表的命令。 该命令使用 Start-Job cmdlet 将命令作为后台作业运行,并将作业保存在变量中 $job

Receive-Job 命令指示 -Wait 在作业完成之前,然后获取结果并将其存储在变量中 $Results

示例 5:仅当连接测试成功时创建会话

仅当发送到计算机的至少一个 pings 成功时,此示例才会在 Server01 计算机上创建会话。

if (Test-Connection -TargetName Server01 -Quiet) { New-PSSession -ComputerName Server01 }

cmdlet Test-Connection 使用提供的 Quiet 参数对计算机执行 ping Server01 操作。 生成的值是 $True 如果四个 ping 中的任何一个成功。 如果 pings 均未成功,则值为 $False

Test-Connection如果命令返回值$True,该命令使用 New-PSSession cmdlet 创建 PSSession

示例 6:使用 Traceroute 参数

在 PowerShell 6.0 中引入, Traceroute 参数映射本地计算机与使用 TargetName 参数指定的远程目标之间的路由。

Test-Connection -TargetName www.google.com -Traceroute

Target: google.com

Hop Hostname                  Ping Latency Status           Source       TargetAddress
                                      (ms)
--- --------                  ---- ------- ------           ------       -------------
  1 172.20.0.1                   1       4 Success          Lira         172.217.9.174
  1 172.20.0.1                   2       3 Success          Lira         172.217.9.174
  1 172.20.0.1                   3       2 Success          Lira         172.217.9.174
  2 12.108.153.193               1       3 Success          Lira         172.217.9.174
  2 12.108.153.193               2       3 Success          Lira         172.217.9.174
  2 12.108.153.193               3       2 Success          Lira         172.217.9.174
  3 12.244.85.177                1      11 Success          Lira         172.217.9.174
  3 12.244.85.177                2      12 Success          Lira         172.217.9.174
  3 12.244.85.177                3      12 Success          Lira         172.217.9.174
  4 *                            1      14 DestinationNetw… Lira         172.217.9.174
  4 *                            2       * TimedOut         Lira         172.217.9.174
  4 *                            3      20 DestinationNetw… Lira         172.217.9.174
  5 *                            1       * TimedOut         Lira         172.217.9.174
  5 *                            2      15 DestinationNetw… Lira         172.217.9.174
  5 *                            3       * TimedOut         Lira         172.217.9.174
  6 *                            1      18 DestinationNetw… Lira         172.217.9.174
  6 *                            2       * TimedOut         Lira         172.217.9.174
  6 *                            3      16 DestinationNetw… Lira         172.217.9.174
  7 *                            1       * TimedOut         Lira         172.217.9.174
  7 *                            2       * TimedOut         Lira         172.217.9.174
  7 *                            3       * TimedOut         Lira         172.217.9.174
  8 *                            1       * TimedOut         Lira         172.217.9.174
  8 *                            2       * TimedOut         Lira         172.217.9.174
  8 *                            3       * TimedOut         Lira         172.217.9.174
  9 *                            1       * TimedOut         Lira         172.217.9.174
  9 *                            2       * TimedOut         Lira         172.217.9.174
  9 *                            3       * TimedOut         Lira         172.217.9.174
 10 *                            1       * TimedOut         Lira         172.217.9.174
 10 *                            2       * TimedOut         Lira         172.217.9.174
 10 *                            3       * TimedOut         Lira         172.217.9.174
 11 172.217.9.174                1      23 Success          Lira         172.217.9.174
 11 172.217.9.174                2      21 Success          Lira         172.217.9.174
 11 172.217.9.174                3      22 Success          Lira         172.217.9.174

使用 Test-ConnectionTraceroute 参数调用该命令。 结果(对象 [Microsoft.PowerShell.Commands.TestConnectionCommand+TraceStatus] )输出到 Success 输出流。

参数

-BufferSize

指定使用此命令发送的缓冲区的大小,以字节为单位。 默认值为 32。

Type:Int32
Aliases:Size, Bytes, BS
Position:Named
Default value:32
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 参数一起使用,以测试 Path 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
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-MtuSize

此参数用于发现路径 MTU 大小。 该 cmdlet 返回一个 PingReply#MTUSize 对象,该对象包含目标的路径 MTU 大小。 有关 Path MTU 的详细信息,请参阅维基百科中的 Path MTU 发现 文章。

Type:SwitchParameter
Aliases:MtuSizeDetect
Position:Named
Default value:False
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Ping

使 cmdlet 执行 ping 测试。 这是 cmdlet 的默认模式 Test-Connection

Type:SwitchParameter
Position:Named
Default value:True
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Quiet

Quiet 参数返回布尔值。 使用此参数可禁止显示所有错误。

测试的每个连接都返回 一个布尔 值。 如果 TargetName 参数指定多台计算机,则返回 布尔 值的数组。

如果给定目标 的任何 ping 成功, $True 则返回。

如果给定目标 的所有 ping 都失败, $False 则返回。

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Repeat

使 cmdlet 连续发送 ping 请求。 此参数不能与 Count 参数一起使用。

Type:SwitchParameter
Aliases:Continuous
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-ResolveDestination

使 cmdlet 尝试解析目标的 DNS 名称。 与 Traceroute 参数结合使用时,也会检索所有中间主机的 DNS 名称(如果可能)。

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Source

指定发出 ping 请求的计算机的名称。 请输入以逗号分隔的计算机名称的列表。 默认为本地计算机。

注意

PowerShell 版本 6 及更新不支持此参数。 提供此参数会导致错误。

Type:String
Position:Named
Default value:Local computer
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-TargetName

指定要测试的计算机 () 。 请键入计算机名称或者以 IPv4 或 IPv6 格式键入 IP 地址。

Type:String[]
Aliases:ComputerName
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-TcpPort

指定要在 TCP 连接测试中使用的目标上的 TCP 端口号。 该 cmdlet 将尝试与目标上的指定端口建立 TCP 连接。

如果可以建立连接, $True 将返回。

如果无法建立连接, $False 将返回。

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+TraceStatus 对象。

Type:SwitchParameter
Position:Named
Default value:False
Required:True
Accept pipeline input:False
Accept wildcard characters:False

输入

None

无法通过管道将输入传递给此 cmdlet。

输出

TestConnectionCommand+PingStatus, TestConnectionCommand+TraceStatus, Boolean, TestConnectionCommand+PingMtuStatus

默认情况下, Test-Connection 为每个 ping 回复返回 TestConnectionCommand+PingStatus 对象。

如果指定 Traceroute 参数,cmdlet 将为路由上的每个 ping 回复返回 TestConnectionCommand+TraceStatus 对象。

如果指定 QuietTcpPort 参数,它将返回 布尔 值。 如果测试了多个连接,将返回 布尔 值数组。