我目前正试图在我的基础设施上启动一个非常长的Iperf测试,所以我正在开发一些powershell脚本来进行测试。
为了分析结果,我希望在我的输出中每行发送一个新数据包的小时/分钟/秒。
目前,我在我的脚本中使用这样的-T参数:
Start-Process -FilePath "C:iperf3.exe" -Verb runAs -ArgumentList "-c",CLIENT_IP,"-t","86400","-p",5102,"-T","$(Get-Date -Format 'HH:mm:ss')","--logfile","C:toto.txt"
但是命令的输出只会给我当前的时间,当我启动这样的命令时:
03:40:56: Connecting to host x.x.x.x, port 5201
03:40:56: [ 4] local x.x.x.x port 41674 connected to x.x.x.x port 5201
03:40:56: [ ID] Interval Transfer Bandwidth Retr Cwnd
03:40:56: [ 4] 0.00-1.00 sec 113 MBytes 946 Mbits/sec 0 208 KBytes
03:40:56: [ 4] 1.00-2.00 sec 112 MBytes 943 Mbits/sec 0 208 KBytes
03:40:56: [ 4] 2.00-3.00 sec 112 MBytes 939 Mbits/sec 0 210 KBytes
03:40:56: [ 4] 3.00-4.00 sec 112 MBytes 942 Mbits/sec 0 210 KBytes
03:40:56: [ 4] 4.00-5.00 sec 112 MBytes 940 Mbits/sec 0 210 KBytes
如果不重新启动命令iperf3.exe.几次,我就找不到一种方法来随着当前时间增加值
有没有增加价值的解决方案?我不能用";对于"/"而";循环(在我看来(,因为它运行了很多iperf3实例,而这不是预期的。
有关信息,我使用Windows上的iperf3-3.1.3的最新版本。
提前感谢您的帮助。
根据iperf3
的文档判断:
-
-T
(--title
(用于定义一个静态前缀,以便在每个输出行之前,由于传递了可扩展字符串"$(Get-Date -Format 'HH:mm:ss')"
作为参数,因此使用了一个表示字符串扩展(插值(时时间的static字符串。 -
相比之下,您要查找的是
--timestamps
选项,它会为每个输出行预先准备一个(真实的、与事件相关的(时间戳。-
您可以使用Unix
strftime()
库函数中使用的格式字符串,通过可选参数控制这些时间戳的特定格式。 -
这些格式字符串与.NET的日期/时间格式字符串(例如
Get-Date
所使用的(不兼容,因此HH:mm:ss
不起作用;strftime()
等效为:%H:%M:%S
-
把所有这些放在一起:
Start-Process -FilePath 'C:iperf3.exe' -Verb RunAs -ArgumentList @"
-c $client_IP -t 86400 -p 5102 --logfile C:toto.txt --timestamps=%H:%M:%S
"@
注意:我已经用变量$client_IP
替换了CLIENT_IP
(我认为它只是一个伪代码占位符(-根据需要进行调整
您是否尝试使用--interval
或--verbose
(了解详细信息(选项?