Powershell Do Until 变量包含字符串两次



我正在尝试使用 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

最新更新