Test-Connection

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

语法

Test-Connection
    [-AsJob]
    [-DcomAuthentication <AuthenticationLevel>]
    [-WsmanAuthentication <String>]
    [-Protocol <String>]
    [-BufferSize <Int32>]
    [-ComputerName] <String[]>
    [-Count <Int32>]
    [-Impersonation <ImpersonationLevel>]
    [-ThrottleLimit <Int32>]
    [-TimeToLive <Int32>]
    [-Delay <Int32>]
    [<CommonParameters>]
Test-Connection
    [-AsJob]
    [-DcomAuthentication <AuthenticationLevel>]
    [-WsmanAuthentication <String>]
    [-Protocol <String>]
    [-BufferSize <Int32>]
    [-ComputerName] <String[]>
    [-Count <Int32>]
    [-Credential <PSCredential>]
    [-Source] <String[]>
    [-Impersonation <ImpersonationLevel>]
    [-ThrottleLimit <Int32>]
    [-TimeToLive <Int32>]
    [-Delay <Int32>]
    [<CommonParameters>]
Test-Connection
    [-DcomAuthentication <AuthenticationLevel>]
    [-WsmanAuthentication <String>]
    [-Protocol <String>]
    [-BufferSize <Int32>]
    [-ComputerName] <String[]>
    [-Count <Int32>]
    [-Impersonation <ImpersonationLevel>]
    [-TimeToLive <Int32>]
    [-Delay <Int32>]
    [-Quiet]
    [<CommonParameters>]

说明

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

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

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

示例

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

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

Test-Connection -ComputerName Server01

Source        Destination     IPV4Address     IPV6Address  Bytes    Time(ms)
------        -----------     -----------     -----------  -----    --------
ADMIN1        Server01         10.59.137.44                32       0
ADMIN1        Server01         10.59.137.44                32       0
ADMIN1        Server01         10.59.137.44                32       0
ADMIN1        Server01         10.59.137.44                32       1

Test-Connection 使用 ComputerName 参数指定 Server01 计算机。

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

此示例将来自本地计算机的 ping 请求发送到多台远程计算机。

Test-Connection -ComputerName Server01, Server02, Server12

示例 3:向一台计算机发送来自多台计算机的回显请求

此示例将来自不同源计算机的 ping 请求发送到一台远程计算机 Server01。

Test-Connection -Source Server02, Server12, localhost -ComputerName Server01 -Credential Domain01\Admin01

Test-Connection 使用 Credential 参数指定有权从源计算机发送 ping 请求的用户的凭据。 使用此命令格式可从多个点来测试连接的延迟时间。

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

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

Test-Connection -ComputerName Server01 -Count 3 -Delay 2 -TTL 255 -BufferSize 256 -ThrottleLimit 32

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

如果因跃点数增加或网络流量较高而预计 ping 响应比往常需要更长时间,可以使用这些选项。

示例 5:以后台作业身份运行测试

此示例演示了如何将 Test-Connection 命令作为 PowerShell 后台作业运行。

$job = Test-Connection -ComputerName (Get-Content Servers.txt) -AsJob
if ($job.JobStateInfo.State -ne "Running") {$Results = Receive-Job $job}

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

if 命令检查作业是否仍在运行。 如果作业未运行,Receive-Job 获取结果并将其存储在 $Results 变量中。

示例 6:使用凭据对远程计算机执行 ping 操作

此命令使用 Test-Connection cmdlet 对远程计算机执行 ping 操作。

Test-Connection Server55 -Credential Domain55\User01 -Impersonation Identify

该命令使用 Credential 参数指定有权对远程计算机执行 ping 操作的用户帐户,并使用 Impersonation 参数将模拟级别更改为“Identify”

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

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

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

if 命令使用 Test-Connection cmdlet 对 Server01 计算机执行 ping 操作。 该命令使用 Quiet 参数,这样将返回一个布尔值,而不是 Win32_PingStatus 对象。 如果这四条 ping 中有任何 ping 成功,则该返回值为 $True,否则为 $False

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

参数

-AsJob

指示此 cmdlet 作为后台作业运行。

若要使用此参数,必须为本地计算机和远程计算机配置远程处理,并且在 Windows Vista 以及更高版本的 Windows 操作系统上,还必须使用“以管理员身份运行”选项打开 PowerShell。 有关详细信息,请参阅 about_Remote_Requirements

指定 AsJob 参数时,该命令立即返回代表后台作业的对象。 当作业完成时,你可以继续在此会话中工作。 作业在本地计算机上创建,并且来自远程计算机的结果将自动返回本地计算机。 若要获取作业结果,请使用 Receive-Job cmdlet。

有关 PowerShell 后台作业的详细信息,请参阅 about_Jobsabout_Remote_Jobs

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

-BufferSize

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

Type:Int32
Aliases:Size, Bytes, BS
Position:Named
Default value:32
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ComputerName

指定要对其执行 ping 操作的计算机。 请键入计算机名称或者以 IPv4 或 IPv6 格式键入 IP 地址。 不允许使用通配符。 此参数是必需的。

此参数不依赖于 PowerShell 远程处理。 即使计算机未配置为运行远程命令,也可以使用 ComputerName 参数。

注意

在 PowerShell 6.0 及更高版本中,ComputerName 参数重命名为 TargetName。

Type:String[]
Aliases:CN, IPAddress, __SERVER, Server, Destination
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Count

指定要发送的回显请求数。 默认值为 4。

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

-Credential

指定有权从源计算机发送 ping 请求的用户帐户。 键入用户名,例如“User01”或“Domain01\User01”;或输入 PSCredential 对象,例如来自 Get-Credential cmdlet 的一个 PSCredential 对象。

仅当该命令中使用了 Source 参数时,Credential 参数才有效。 这些凭据不会影响目标计算机。

Type:PSCredential
Position:Named
Default value:Current user
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DcomAuthentication

指定此 cmdlet 用于 WMI 的身份验证级别。 Test-Connection 使用 WMI。 此参数的可接受值为:

  • 默认。 Windows 身份验证
  • 。 无 COM 身份验证
  • 连接。 连接级 COM 身份验证
  • Call。 调用级 COM 身份验证
  • Packet。 数据包级 COM 身份验证
  • PacketIntegrity。 数据包完整性级 COM 身份验证
  • PacketPrivacy。 数据包隐私级 COM 身份验证
  • Unchanged。 与前一个命令相同

默认值为 Packet,其枚举值为 4。 有关此参数的值的详细信息,请参阅 AuthenticationLevel 枚举。

Type:AuthenticationLevel
Aliases:Authentication
Accepted values:Default, None, Connect, Call, Packet, PacketIntegrity, PacketPrivacy, Unchanged
Position:Named
Default value:Packet (enumerated value of 4)
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Delay

指定两次 ping 操作之间的间隔时间,以秒为单位。

Type:Int32
Position:Named
Default value:1 (second)
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Impersonation

指定此 cmdlet 调用 WMI 时使用的模拟级别。 Test-Connection 使用 WMI。

此参数的可接受值如下所示:

  • 默认。 默认模拟。
  • 匿名。 隐藏调用方的身份。
  • Identify。 允许对象查询调用方的凭据。
  • Impersonate。 允许对象使用调用方的凭据。

默认值为 Impersonate

Type:ImpersonationLevel
Accepted values:Default, Anonymous, Identify, Impersonate, Delegate
Position:Named
Default value:Impersonate
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Protocol

指定协议。 此参数的可接受值为 DCOM 和 WSMan。

Type:String
Accepted values:DCOM, WSMan
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Quiet

Quiet 参数返回 System.Boolean 对象中的布尔值。 使用此参数可禁止显示所有错误。

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

如果任何 ping 成功,则返回 $True

如果所有 ping 失败,则返回 $False

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

-Source

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

Type:String[]
Aliases:FCN, SRC
Position:1
Default value:Local computer
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-ThrottleLimit

指定为运行此命令可建立的并发连接的最大数目。 如果省略此参数或输入 0 值,则使用默认值 32。

节流限制仅适用于当前命令,而不适用于会话或计算机。

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

-TimeToLive

指定数据包可以转发的最大时间。 对于网关、路由器等中的每个跃点,TimeToLive 值将减少 1。 为零时,将丢弃数据包并返回错误。 在 Windows 中,默认值为 128。 TimeToLive 参数的别名是 TTL

Type:Int32
Aliases:TTL
Position:Named
Default value:128 in Windows
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WsmanAuthentication

指定此 cmdlet 使用 WSMan 协议时用于对用户的凭据进行身份验证的机制。 此参数的可接受值为:

  • 基本
  • CredSSP
  • 默认
  • 摘要
  • Kerberos
  • Negotiate。

默认值为 Default。

有关此参数的值的详细信息,请参阅 AuthenticationMechanism 枚举

注意:在凭据安全服务提供程序 (CredSSP) 身份验证中,用户凭据传递到远程计算机中以进行验证,这种验证用于要求对多个资源(例如访问远程网络共享)进行验证的命令。 此机制增加了远程操作的安全风险。 如果远程计算机的安全受到威胁,则传递给该计算机的凭据可用于控制网络会话。

已在 Windows PowerShell 3.0 中引入了此参数。

Type:String
Accepted values:Default, Basic, Negotiate, CredSSP, Digest, Kerberos
Position:Named
Default value:Default
Required:False
Accept pipeline input:False
Accept wildcard characters:False

输入

None

不能通过管道将对象传递给此 cmdlet。

输出

ManagementObject

默认情况下,此 cmdlet 为每个 ping 答复返回一个 Win32_PingStatus 对象。

System.Management.Automation.RemotingJob

如果你指定 AsJob 参数,此 cmdlet 将返回作业对象。

Boolean

使用 Quiet 参数时,它会返回一个布尔值。 如果 cmdlet 测试多个连接,它将返回一组布尔值。

备注

此 cmdlet 使用 Win32_PingStatus 类。 Get-WMIObject Win32_PingStatus 命令等效于 Test-Connection 命令。

在 PowerShell 3.0 中已经引入了 Source 参数集。