我有一个简单的查询但是test-netConnection或测试连接在循环中使用时给了我很多时间。 所以基本上我想循环运行,直到服务器响应我在某个端口上的连接尝试。 通过测试连接,我发现你无法指定端口,所以我想解决方案是使用tnc - test-netconnection。
在do while循环中,它不起作用,因为tnc不使用连续的ping / connect尝试。
do {
Write-Host "waiting..."
sleep 3
} until(Test-NetConnection $HOST -Port PORT)
答案 0 :(得分:9)
上面的代码不起作用,因为until测试只验证结果是否为null。 Test-NetConnection
总是返回一个对象(即使将false作为状态),因此测试将永远是" true",这意味着您的do { }
脚本块只会运行一次,无论什么结果是。一种解决方案是使until测试检查返回的属性之一,如下所示:
do {
Write-Host "waiting..."
sleep 3
} until(Test-NetConnection $HOST -Port PORT | ? { $_.TcpTestSucceeded } )