【问题标题】:Stop a continuous Ping停止连续 Ping
【发布时间】:2020-12-08 23:45:45
【问题描述】:

我正在尝试创建 Powershell 脚本 用户将提供带有 IP 地址/主机名和测试持续时间的文本文件 • 脚本应获取每个 IP 地址/主机名,打开 cmd/powershell 并运行 ping 测试 为此,我创建了一个 bat 文件,其中包含

ping -t %1 |find /v ""|cmd /q /v:on /c "for /l %%a in (0) do (set "data="&set /p "data="&if defined data echo(!Date! !time! !data!)" > %2

在 powershell 中我正在运行它 $Script = "C:\Ping\pingTest\pingstat.cmd $hostName $outputFile" $Runpingtest = cmd.exe /c $脚本

请给我一些想法,以根据测试持续时间发现连续的 ping

【问题讨论】:

  • 如果您使用的是 PowerShell,请使用 Test-Connection。每个 ping 的典型时间是一 (1) 秒。 -Delay 参数可以改变这一点。使用命令help Test-Connection -Full 了解更多信息。
  • ping 应该有一个属性,例如/n <count>,其中 counts 指定发送的回显请求消息的数量。默认应该是 4。

标签: powershell cmd ping


【解决方案1】:

如果不发出 ping 进程停止的信号,您就无法停止连续 ping。您需要使用 ping /n COUNT 进行多次 ping。


但是您可以使用纯 PowerShell 和 Test-NetConnection 执行类似的操作,然后将结果导出为 CSV,如下所示:

1..$pingCount | Foreach-Object {
  Test-NetConnection google.com |
    Select-Object @{
      Name='Date'
      Expression={ Get-Date -Format 'ddd MM/dd/yyyy hh:mm:ss.ff' }
    }, ComputerName, SourceAddress, RemoteAddress, PingSucceeded,
    @{
      Name='Latency'
      Expression={ "$($_.PingReplyDetails.RoundTripTime) ms" }
    }
} | Export-Csv -NoTypeInformation C:\Path\To\file.csv

请注意,Test-NetConnection 没有-Count 参数,这就是我上面的代码将Test-NetConnection 调用包装在一个循环中的原因。您可能还需要为您的语言环境调整 Get-Date 格式,因为我的代码使用适合美国的日期格式。

另外请注意,我使用Select-Object 创建自定义DateLatency 列,因为Test-NetConnection 不提供当前运行时间,并且ping 延迟隐藏在嵌套对象中.

【讨论】:

    猜你喜欢
    • 2020-06-25
    • 2013-01-24
    • 1970-01-01
    • 1970-01-01
    • 2015-04-14
    • 1970-01-01
    • 1970-01-01
    • 2016-07-11
    • 2021-06-11
    相关资源
    最近更新 更多