我有一个简单的查询,但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)