循环,直到IP:端口响应

时间:2014-03-15 22:03:37

标签: loops powershell

我有一个简单的查询但是test-netConnection或测试连接在循环中使用时给了我很多时间。 所以基本上我想循环运行,直到服务器响应我在某个端口上的连接尝试。 通过测试连接,我发现你无法指定端口,所以我想解决方案是使用tnc - test-netconnection。

在do while循环中,它不起作用,因为tnc不使用连续的ping / connect尝试。

do {
  Write-Host "waiting..."
  sleep 3      
} until(Test-NetConnection $HOST -Port PORT)

1 个答案:

答案 0 :(得分:9)

上面的代码不起作用,因为until测试只验证结果是否为null。 Test-NetConnection总是返回一个对象(即使将false作为状态),因此测试将永远是" true",这意味着您的do { }脚本块只会运行一次,无论什么结果是。一种解决方案是使until测试检查返回的属性之一,如下所示:

do {
  Write-Host "waiting..."
  sleep 3      
} until(Test-NetConnection $HOST -Port PORT | ? { $_.TcpTestSucceeded } )