none
PowerShell에서 TCP Port확인 RRS feed

답변

  • 안녕하십니까? 김도남 님

    Microsoft TechNet Forum 사이트를 방문해 주셔서 감사합니다.

     

    문의 하신 “PowerShell에서 TCP Port확인”에 대한 답변을 드리겠습니다.

     

    Step 1 : 이름 풀이

     

    .NET Framework를 이용해서 DNS Record를 쿼리를 할 수 있습니다.

     

    [System.Net.Dns]::GetHostAddresses(“localhost”)

     

     

    Step 2 : TCP 연결

     

    System.Net.Sockets.TCPClient Class를 이용해서 TCP 연결을 할 수 있습니다.

     

    $socket = New-Object System.Net.Sockets.TCPClient

       

    $connect = $socket.BeginConnect(“111.111.111.1”, “135”, $null, $null)

     

     

    Step 3 : Full Script

     

    아래의 함수는 HostName, Port를 인자로 받아 해당 머신에 해당 포트로 TCP Protocol을 이용해서  접속을 시도 합니다.

     

    function Test-TCPPort {

        param(

            [Parameter(Mandatory=$true)]

            $computerName,

            [Parameter(Mandatory=$true)]

            $port

        )

       

        $addresses = [System.Net.Dns]::GetHostAddresses($computerName) | ? { $_.AddressFamily -eq 'InterNetwork'}

     

        $address = [System.Net.IPAddress]::Parse($addresses)

       

        $socket = New-Object System.Net.Sockets.TCPClient

       

        $connect = $socket.BeginConnect($address, $port, $null, $null)

       

        $wait = $Connect.AsyncWaitHandle.WaitOne(5000, $false)

       

        if($socket.Connected -eq $true)

        {

            Write-Host "$computerName $port 연결이 되었습니다."

        }

        else

        {

            Write-Host "$computerName $port 연결을 하지 못했습니다."

        }

    }

     

    Test-TCPPort "localhost" "135"

     

    참고 자료

     

    New-Object

    http://technet.microsoft.com/en-us/library/dd315334.aspx

     

    제가 문제에 대해 더 알아야 할 것이 있다면 응답 주시면 감사하겠습니다.

    제시해 드린 답변이 도움이 되었기를 바랍니다.

    • 답변으로 표시됨 김도남 2011년 12월 28일 수요일 오전 7:03
    2011년 12월 26일 월요일 오전 6:35
    중재자