如何为Powershell获取1行的telnet端口检查循环?

时间:2017-12-21 12:27:31

标签: powershell tcp telnet

我想将以下命令简化为1行,进行循环直到它返回TRUE。

以下将检查TCP连接是否正常工作:

const router = new VueRouter({ ... })

router.beforeEach((to, from, next) => {
  // ...
})

如果没有阻止任何防火墙,通常会打印/返回TRUE。

我想要做的是,在没有脚本/文件的情况下,让这个命令循环,直到它返回一个TRUE值。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

这样的事情会起作用:

while ((New-Object System.Net.Sockets.TcpClient -ArgumentList DESTINATION-IP,PORT).Connected -ne $true) { Start-Sleep -Milliseconds 1000 }

除非你真的想连接洪水,否则我不建议睡眠时间不到250毫秒左右。

另外,请记住,在没有脚本文件的情况下,您不需要制作一个单行程序来调用脚本。 Powershell有一个行终止符:;。您可以轻松拨打powershell -Command { 1; 2; 3; }

尝试使其更加健壮。您可以删除空格和换行符以使其成为一行,但我会将其格式化为易读性:

do {
    try {
        $Connected = (New-Object System.Net.Sockets.TcpClient -ArgumentList DESTINATION-IP,PORT -ErrorAction Stop).Connected;
    }
    catch {
        $Connected = $false;
    }
    if (!$Connected) { Start-Sleep -Milliseconds 1000; }
} until ($true.Equals($Connected));