Test-Connection
将 ICMP 回显请求数据包(“ping”)发送给一台或多台计算机。
语法
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>]
说明
Test-Connection cmdlet 将 Internet 控制消息协议 (ICMP) 回显请求数据包(“ping”)发送给一台或多台远程计算机并返回回显响应回复。可以使用此 cmdlet 确定是否可通过 Internet 协议 (IP) 网络联系特定的计算机。
使用 Test-Connection 的参数可以指定发送和接收计算机,将该命令作为后台作业运行,设置 ping 的超时值和数量以及配置连接和身份验证。
与传统的“ping”命令不同,Test-Connection 返回一个 Win32_PingStatus 对象(您可在 Windows PowerShell 中研究该对象),但可以使用 Quiet 参数强制使它只返回布尔值。
参数
-AsJob
将命令作为后台作业运行。
注意:若要使用此参数,必须为本地计算机和远程计算机配置远程处理,并且在 Windows Vista 以及更高版本的 Windows 上,还必须使用“以管理员身份运行”选项打开 Windows PowerShell。有关详细信息,请参阅 about_Remote_Requirements。
使用 AsJob 参数时,此命令立即返回代表后台作业的对象。当作业完成时,您可以继续在此会话中工作。作业在本地计算机上创建,并且来自远程计算机的结果将自动返回本地计算机。要获取作业结果,请使用 Receive-Job cmdlet。
有关 Windows PowerShell 后台作业的详细信息,请参阅 about_Jobs 和 about_Remote_Jobs。
是否为必需? |
false |
位置? |
named |
默认值 |
False |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-Authentication <AuthenticationLevel>
指定用于 WMI 连接的身份验证级别。(Test-Connection 使用 WMI。)
有效值包括:
Unchanged: 身份验证级别与前一个命令相同。
Default: Windows 身份验证。
None: 无 COM 身份验证。
Connect: 连接级 COM 身份验证。
Call: 调用级 COM 身份验证。
Packet: 数据包级 COM 身份验证。
PacketIntegrity:数据包完整性级 COM 身份验证。
PacketPrivacy: 数据包隐私级 COM 身份验证。
是否为必需? |
false |
位置? |
named |
默认值 |
4 |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-BufferSize <int>
指定使用此命令发送的缓冲区的大小,以字节为单位。默认值为 32。
是否为必需? |
false |
位置? |
named |
默认值 |
32 |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-ComputerName <string[]>
指定要对其执行 ping 操作的计算机。请键入计算机名称或者以 IPv4 或 IPv6 格式键入 IP 地址。不允许使用通配符。此参数是必需的。
此参数不依赖于 Windows PowerShell 远程处理。即使您的计算机未配置为运行远程命令,您也可以使用 ComputerName 参数。
是否为必需? |
true |
位置? |
1 |
默认值 |
|
是否接受管道输入? |
true (ByPropertyName) |
是否接受通配符? |
false |
-Count <int>
指定要发送的回显请求数。默认值为 4。
是否为必需? |
false |
位置? |
named |
默认值 |
4 |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-Credential <PSCredential>
指定有权执行此操作的用户帐户。键入用户名,如“User01”或“Domain01\User01”;或输入 PSCredential 对象,如 Get-Credential cmdlet 输入的一个 PSCredential 对象。
是否为必需? |
false |
位置? |
named |
默认值 |
当前用户 |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-Delay <int>
指定两次 ping 操作之间的间隔时间,以秒为单位。
是否为必需? |
false |
位置? |
named |
默认值 |
1(秒) |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-Impersonation <ImpersonationLevel>
指定调用 WMI 时使用的模拟级别。(Test-Connection 使用 WMI。)默认值为“Impersonate”。
有效值包括:
Default: 默认模拟。
Anonymous: 隐藏调用方的身份。
Identify: 允许对象查询调用方的凭据。
Impersonate: 允许对象使用调用方的凭据。
是否为必需? |
false |
位置? |
named |
默认值 |
3 |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-Quiet
禁止显示所有的错误,并且若有任何 ping 成功则返回 $True,全部失败则返回 $False。
是否为必需? |
false |
位置? |
named |
默认值 |
False |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-Source <string[]>
指定发出 ping 请求的计算机的名称。请输入以逗号分隔的计算机名称的列表。默认值为本地计算机。
是否为必需? |
false |
位置? |
2 |
默认值 |
本地计算机 |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-ThrottleLimit <int>
指定为运行此命令可建立的并发连接的最大数目。如果省略此参数或输入 0 值,则使用默认值 32。
节流限制仅适用于当前命令,而不适用于会话或计算机。
是否为必需? |
false |
位置? |
named |
默认值 |
32 |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-TimeToLive <int>
指定每个回显请求数据包(“ping”)处于活动状态的最长时间,以秒为单位。默认值是 80(秒)。TimeToLive 参数的别名是 TTL。
是否为必需? |
false |
位置? |
named |
默认值 |
80 |
是否接受管道输入? |
false |
是否接受通配符? |
false |
<CommonParameters>
此 cmdlet 支持通用参数:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。有关详细信息,请参阅 about_Commonparameters.
输入和输出
输入类型是指可通过管道传递给 cmdlet 的对象的类型。返回类型是指 Cmdlet 所返回对象的类型。
输入 |
无 不能通过管道将输入传递给此 cmdlet。 |
输出 |
System.Management.ManagementObject#root\cimv2\Win32_PingStatus, System.Management.Automation.RemotingJob, System.Boolean 如果使用 AsJob 参数,则此 cmdlet 返回作业对象。使用 Quiet 参数时,它会返回一个布尔值。否则,此 cmdlet 为每个 ping 返回一个 Win32_PingStatus 对象。 |
说明
此 cmdlet 使用 Win32_PingStatus 类。“get-wmiojbect win32_pingstatus”命令与 Test-Connection 命令等效。
示例 1
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
说明
-----------
此命令将来自本地计算机的回显请求数据包(“ping”)发送到计算机 Server01。此命令使用 ComputerName 参数指定计算机 Server01,但省略可选的参数名称。
示例 2
C:\PS>test-connection -computername server01, server02, server12 -credential domain01\user01
说明
-----------
此命令将来自本地计算机的 ping 请求发送到多台远程计算机。它使用 Credential 参数指定有权对所有这些远程计算机执行 ping 操作的用户帐户。
示例 3
C:\PS>test-connection -source Server02, Server 12, localhost -computername Server01
说明
-----------
此命令将来自不同源计算机的 ping 请求发送到一台远程计算机 Server01。使用此命令格式可从多个点来测试连接的延迟时间。
示例 4
C:\PS>test-connection -computername Server01 -count 3 -delay 2 -TTL 256 -buffersize 256 -throttle 32
说明
-----------
此命令将来自本地计算机的三个 ping 请求发送到计算机 Server01。它使用 Test-Connection 的参数来自定义该命令。
如果因跃点数增加或网络流量较高而预计 ping 响应比往常需要更长时间,请使用此命令格式。
示例 5
C:\PS>$job = test-connection -computername (get-content servers.txt) -asjob
C:\PS> if ($job.jobstateinfo.state -ne "Running") {$results = receive-job $job}
说明
-----------
此示例演示了如何将 Test-Connection 命令作为 Windows PowerShell 后台作业运行。
第一条命令使用 Test-Connection cmdlet 对企业中的多台计算机执行 ping 操作。ComputerName 参数的值是从 Servers.txt 文件读取计算机名称列表的 Get-Content 命令。此命令使用 AsJob 参数将命令作为后台作业运行。
第二条命令检查该作业是否仍在运行;如果该作业未运行,则使用 Receive-Job 命令获取结果并将结果存储在 $results 变量中。
示例 6
C:\PS>test-connection Server55 -credential domain55\user01 -impersonation Identify
说明
-----------
此命令使用 Test-Connection cmdlet 对远程计算机执行 ping 操作。此命令使用 Credential 参数指定有权对远程计算机执行 ping 操作的用户帐户,使用 Impersonation 参数将模拟级别更改为“Identify”。
示例 7
C:\PS>if (test-connection -computername Server01 -quiet) {new-pssession Server01}
说明
-----------
仅当发送到 Server01 上的至少一条 ping 成功时,此命令才会在该计算机上创建一个 PSSession。
此命令使用 Test-Connection cmdlet 对 Server01 计算机执行 ping 操作。此命令使用 Quiet 参数,这样将返回布尔值,而不是 Win32_PingStatus 对象。如果这四条 ping 中有任何 ping 成功,则该返回值为 $True,否则为 False。
如果 Test-Connection 命令返回 $True 值,则该命令将使用 New-PSSession cmdlet 创建 PSSession。