如何通过不同的端口进行多个TCP连接?

时间:2012-08-30 06:06:59

标签: powershell powershell-v2.0

我尝试通过端口建立TCP连接以检查端口是否打开。

Param (
        [string] $IPAddress,
        $Ports
    )

$t = New-Object Net.Sockets.TcpClient

$PortArray= $Ports -split ","

Foreach ($Port in $PortArray) {

    $t.Connect($Ipaddress,$Port)

    if($t.Connected)
    {
        "Port $Port is operational"
    }
    else
    {
        "Port $Port is Not opened . Request port access via IT support team. "
    }

    $t.Close()  
}

我调用了下面的函数。

PS D:\PowerCLi-Scripts> .\Is-PortOpened.ps1 -IPAddress "193.44.35.234" -Port ("443,902,903")

当连接到第二个和第三个端口时,它会抛出错误,如下所示。

  

使用“2”参数调用“Connect”的异常:“无法访问a   处置对象。

虽然我已经给了$ t.close()。我仍然面临这个问题。

有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

根据documentation(MSDN)Close方法将套接字标记为已置位。这意味着您无法重用相同的实例,并且需要在尝试连接之前创建新的TcpClient实例。将以$t = ...开头的行移动到foreach循环中,您应该没问题。