问题描述
我正在尝试创建Powershell脚本,其中 用户将提供带有ipaddress /主机名和测试持续时间的文本文件 •脚本应使用每个IP地址/主机名,打开cmd / powershell并运行ping测试 为此,我创建了一个包含
的蝙蝠文件。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 $ script
请给我一些想法,以便根据测试持续时间发现连续的ping
解决方法
如果不通知ping过程停止,则无法停止连续ping。您需要使用ping /n COUNT
进行ping操作。
但是您可以使用纯PowerShell和https://stackoverflow.com/a/60895009/5393858进行类似的操作,然后将结果导出到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
创建自定义Date
和Latency
列,因为Test-NetConnection
不提供其当前运行时间,并且ping延迟埋在嵌套对象中。