Loops 循环直到IP:端口响应
我有一个简单的查询,但是测试netConnection或测试connection在循环中使用时给我带来了困难。 因此,基本上我希望在循环中运行,直到服务器响应我在某个端口上的连接尝试。 使用test connection,我发现您无法指定端口,因此我想解决方案是使用tnc-test netconnection 在do-while循环中,它不起作用,因为tnc不使用连续的ping/connect尝试Loops 循环直到IP:端口响应,loops,powershell,Loops,Powershell,我有一个简单的查询,但是测试netConnection或测试connection在循环中使用时给我带来了困难。 因此,基本上我希望在循环中运行,直到服务器响应我在某个端口上的连接尝试。 使用test connection,我发现您无法指定端口,因此我想解决方案是使用tnc-test netconnection 在do-while循环中,它不起作用,因为tnc不使用连续的ping/connect尝试 do { Write-Host "waiting..." sleep 3 }
do {
Write-Host "waiting..."
sleep 3
} until(Test-NetConnection $HOST -Port PORT)
上面的代码不起作用,因为直到测试只验证结果是否不为null
testnetconnection
始终返回一个对象(即使状态为false),因此测试将始终为“true”,这意味着无论结果如何,do{}
scriptblock只运行一次。一种解决方案是让测试检查返回的属性之一,如下所示:
do {
Write-Host "waiting..."
sleep 3
} until(Test-NetConnection $HOST -Port PORT | ? { $_.TcpTestSucceeded } )
非常感谢弗罗德!我实现了这一点,它按预期工作。在建立连接之前的脚本中,tnc将返回警告消息,直到可以到达端口。我可以通过-WarningPreference-SilentlyContinue来克服这些消息,因为tnc参数-InformationLevel将在do-until循环中打乱。您将如何为此添加超时/尝试限制?回答得很好,非常感谢。关于
测试网络连接的输出
,如果添加参数-informationlevelquiet
,它将返回true/false,以便工作:直到(测试网络连接$HOST Port$Port-informationlevelquiet)
。我必须解决这个问题,因为docker compose不喜欢我的入口点覆盖中的$\ucode>