循环,直到IP:端口响应

use*_*292 5 powershell loops

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

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

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

Fro*_* F. 10

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

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