Powershell 中的“执行直到”

Powershell 中的“执行直到”

我正在通过串行端口使用 powershell 连接到一个设备,并且我试图改变一个值,直到另一个值变为 0。我正在使用 Do-Until,但它只是无休止运行,第一个值被一遍又一遍地更改。我需要做的是,首先我检查Value2aka $line1,如果它不是 0,我需要检查Value1aka V45,将它加 10,发送命令来更改它并重置设备,然后再次检查Value2,如果它不是 0,则重复。我试过Do-While($line -ne 0)Do-Until($line -le 0)结果相同。当我尝试时Do-Until($line -ne 0),它在第一次运行后停止,Value1(较高)和 Value2(较低)发生了变化。我运行了脚本 3-4 次,最终 Value2 达到了 0。我猜我在 Do-Until(While) 语句中出了问题,但我没有看到它。

$port.WriteLine("R?`r")
$string1 = $port.ReadLine()
$line1 = [int]($string1 -split ",")[11]
if($line1 -ne 0){
    do{
        $port.WriteLine("V45?`r")
        $v45 = [int]$port.ReadLine()+10
        $port.WriteLine("V45,${v45}`r")
        $port.ReadLine()
        $port.WriteLine("RST`r")
        $port.ReadLine()
        $port.ReadLine()
        $port.WriteLine("R?`r")
        $string = $port.ReadLine()
        $line = [int]($string1 -split ",")[11]
    }until($line -eq 0)
}

答案1

您正在阅读$string但随后解析$string1。在第二行将其重命名$string1为。$string

$string = $port.ReadLine() $line = [int]($string1 -split ",")[11] #Change this line to $string

以更有意义的方式命名变量会对您有益。

相关内容