想要使用任意数量的 ICMP 请求对特定主机进行 ping 操作,但还希望 ping 程序在第一次回复时终止(加速脚本)。内置的 Windows ping 和一些我测试过的其他程序都没有这样的功能。有人知道具有此功能的 Windows ping 程序吗?我知道我可以使用“-n 1”参数循环 ping 程序,但这会导致每次循环运行时都启动 ping 程序,如果使用量很大,可能会导致不必要的系统负载。
答案1
您可以在 PowerShell 中执行类似的事情,它将Test-Connection
cmdlet 作为 ping 的包装器。
param(
[string]$Name = "8.8.8.8",
[int]$count = 4
)
[bool]$Success = $false
For ($i=0; $i -le $count; $i++) {
$result = Test-Connection -ComputerName $Name -Count 1 -ErrorAction SilentlyContinue
if ($result.StatusCode -eq 0)
{
$Success = $true
$result
break;
}
}
Write-Output "Successful connection: $Success"
测试连接总是使用单个 ping,并且我在其周围放置一个循环,一旦 ping 成功,我们就会跳出循环,理想情况下是在第一次 ping 之后,否则它会尝试 x 次,如 $count 中所指定。
PowerShell 没有启动 ping.exe 可执行文件,它使用底层的网络 API,因此在负载下可能会表现得更好一些。
答案2
检查-n
范围
-n Count :指定发送的 Echo Request 消息的数量。默认值为 4。
ping.exe -n 1
应该只发送一个 Echo Request 消息
如果您希望加快速度,您可能还需要检查其他参数,特别是该timeout
参数。