将 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

默认值

Current user

是否接受管道输入?

false

是否接受通配符?

false

-Delay <int>

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

是否为必需?

false

位置?

named

默认值

1 (second)

是否接受管道输入?

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

默认值

Local computer

是否接受管道输入?

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 所返回对象的类型。

输入

None

不能通过管道将输入传递给此 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。






另请参阅




目录