Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 循环直到IP:端口响应_Loops_Powershell - Fatal编程技术网

Loops 循环直到IP:端口响应

Loops 循环直到IP:端口响应,loops,powershell,Loops,Powershell,我有一个简单的查询,但是测试netConnection或测试connection在循环中使用时给我带来了困难。 因此,基本上我希望在循环中运行,直到服务器响应我在某个端口上的连接尝试。 使用test connection,我发现您无法指定端口,因此我想解决方案是使用tnc-test netconnection 在do-while循环中,它不起作用,因为tnc不使用连续的ping/connect尝试 do { Write-Host "waiting..." sleep 3 }

我有一个简单的查询,但是测试netConnection或测试connection在循环中使用时给我带来了困难。 因此,基本上我希望在循环中运行,直到服务器响应我在某个端口上的连接尝试。 使用test connection,我发现您无法指定端口,因此我想解决方案是使用tnc-test netconnection

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

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>