如何在Powershell中检查端口是否打开

Dev*_*vam 5 windows powershell command-line

telnet我的系统中没有命令。

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

所以这是我的简单问题——如何使用powershell.

命令netstat可以简要说明本地系统服务和端口以及 UDP 或 TCP 已启动和运行的特定协议。因为我没有,所以telnet我需要通过powershell. 欢迎任何意见和建议。

小智 11

Test-NetConnection ###.###.###.### -Port ##
Run Code Online (Sandbox Code Playgroud)


Dav*_*tin 7

您可以使用以下命令尝试打开端口,如果没有返回错误,则端口已打开:

$ipaddress = ""
$port = ""
$tcpClient = new-object Net.Sockets.TcpClient
$tcpClient.Connect("$ipaddress", $Port)
$tcpClient.Dispose()
Run Code Online (Sandbox Code Playgroud)

这是一个更完整的示例,它返回 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 
Run Code Online (Sandbox Code Playgroud)

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