【问题标题】:How to check whether port is open in Powershell如何在Powershell中检查端口是否打开
【发布时间】:2017-05-02 07:08:02
【问题描述】:

我的系统中没有telnet 命令。

但是我的系统安装了Windows 10,所以必须有一种方法可以检查远程系统中特定端口是否打开。我用ping 命令检查过那个特定的远程系统是可以访问的。

所以这是我的简单问题,如何使用powershell 检查特定端口是否打开。

命令netstat 可以简要介绍本地系统服务和端口以及UDP 或TCP 的特定协议是否已启动和运行。因为我没有telnet,所以我需要powershell 来解决这个问题。欢迎任何意见和建议。

【问题讨论】:

  • Test-NetConnection ?
  • 即使我怀疑这一点,但我必须对此非常确定。或者是 Test-NetConnection 是 powershell cmdlet。当我尝试在powershell 中修补的字符串时,我收到错误消息说它不是
  • 我很惊讶目前正在使用的系统是Windows 7,感谢您的即时关注。非常感激。感谢@david-martin 的关注和考虑,而不是像我解释的那样被视为应有的样子。谢谢。
  • Test-NetConnection localhost -p 8080,代替 localhost 你可以尝试任何主机。感谢大家了解这些cmdlet

标签: windows powershell command-line


【解决方案1】:
Test-NetConnection ###.###.###.### -Port ##

【讨论】:

  • 脆皮!谢谢!
【解决方案2】:

您可以使用以下方法尝试打开一个端口,如果没有返回错误则表明该端口已打开:

$ipaddress = ""
$port = ""
$tcpClient = new-object Net.Sockets.TcpClient
$tcpClient.Connect("$ipaddress", $Port)
$tcpClient.Dispose()

这是一个更完整的示例,它返回 true/false,这是 Test-Path 的工作方式:

function Test-Port
{
    param
    (
        $Address,
        $Port
    )
    $tcpClient = new-object Net.Sockets.TcpClient
    try
    {
        $tcpClient.Connect("$Address", $Port)
        $true
    }
    catch
    {
        $false
    }
    finally
    {
        $tcpClient.Dispose()
    }
}

Test-Port -Address localhost -Port 80
Test-Port -Address localhost -Port 81 

根据您使用的 Powershell/Windows 版本,Test-NetConnection 可能更合适。

【讨论】:

  • 不过,您应该在之后处理该对象。
  • 感谢您明确说明如何在命令行模式下使用 Powershell 代替旧版 Telnet 检查特定服务是否已启动和运行。以及关于如何使用 Powershell 中的对象的语义。
  • 显然在其他可以访问的主机上。
猜你喜欢
  • 2012-08-03
  • 2022-01-26
  • 1970-01-01
  • 2013-10-12
  • 2014-12-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多