我正在尝试使用 do 循环运行 tracert 命令 2 次。我只是通过计算"跟踪完成"显示的次数来执行此操作。所以在下面的脚本中,我希望循环运行,直到变量包含"跟踪完成"。 2倍。 但显然它不起作用。
do {
$2+= tracert $ip
} until ( $2.Contains("Trace complete.") -ge 2)
#( $2 | select-string "Trace complete").length -eq 2
我也尝试了选择字符串方法,但在跟踪完成出现两次之前,两者都不会导致循环结束。请帮忙吗?
编辑 1:
我还想将 tracert 的输出存储在一个变量中,以便我可以查看它
tracert
命令返回一个字符串数组,因此Contains()
函数在这里不起作用。
这是一个解决方案,每次tracert
命令包含字符串Trace Complete时,我都会将$count
变量增加 1,该变量使用0
初始化 1。 如果连接的字符串不包含该术语,我将变量增加0。
最后,当$count
变量大于 2 时,直到条件将停止。
$count = 0
$output = do {
$output = tracert 127.0.0.1
if (($output -join '' -match 'Trace complete.')) {
$output # outputs the tracert result
$count++
}
} until ( $count -ge 2)
$output