2013-10-06 3 views
2

포트가 열려 있는지 확인하기 위해 radom IP 또는 호스트 이름을 확인하는 스크립트를 작성하고 싶습니다. 여기까지 내가 지금까지 가지고있는 것이있다. 스크립트 이름은 체크 포트입니다.powershell을 사용하여 열린 포트를 확인하는 방법은 무엇입니까?

foreach ($xhost in $computername){ 
    Write-Host $xhost 
    foreach ($port in $ports) { 
     $Socket = New-Object System.Net.Sockets.TCPClient    
     $Connection = $Socket.BeginConnect($xhost,$port,$null,$null) 

     $Connection.AsyncWaitHandle.WaitOne(5000,$false) | out-null 

     if ($Connection -eq $true) 
      { write-host = "$xhost port $port is open" } 
     else 
      { write-host = "port $port is closed" }  

     $Socket.EndConnect($Connection) 
     $Socket.Close() 
    } 
} 

나는 다음과 같은 방법으로 입력 값을 싶습니다. \ checkport '192.186.1.5' 또는 '192.168.1.5', '192.168.1.105'192.168.1.110 '| 체크 포트

IP 주소를 읽거나 결과를 표시하지 않는 것 같습니다.

누군가이 스크립트로 내가 잘못하고있는 것을 보여줄 수 있는지 궁금합니다.

+0

[This] (http://blogs.technet.com/b/heyscriptingguy/archive/2012/07/02/use-powershell-for-network-host-and-port-discovery-sweeps.aspx) 및 [이] (http://gallery.technet.microsoft.com/scriptcenter/Invoke-TSPingSweep-b71f1b9b) 도움이 될 수 있습니다. –

+0

스크립트에 대한 param 블록을 표시 할 수 있습니까? –

+0

1. 'WaitOne'의 반환 값은 대기가 완료되었거나 시간이 초과 되었는지를 알려주지 만 멀리 버리고 있습니다. 2. 왜 차단하려고하면 Socket.Connect를 차단하지 않습니까? – Richard

답변

1

나는 비슷한 스캔 /보고 기능 보봇 프록스에서 '테스트 포트'기능을 사용할 수있었습니다 코드는 PoshCode로 볼 수 있습니다 :

http://poshcode.org/2514

I 포트를 테스트하는 데 필요한 때 디렉토리 상태에 대해 'port'및 'protocol'열이있는 csv를 작성한 다음 확인할 각 포트의 포트 번호/프로토콜을 추가했습니다. 이것은 다음 스크립트에서 사용되었습니다 :

. .\test-port.ps1 

$computersToCheck = get-content .\computers.txt 
$portList = Import-CSV .\portList.csv 

foreach($entry in $portList) 
{ 
    $testPortParams = @{ 
     port = $($entry.port) 
    } 
    if($($entry.protocol) -eq "tcp") 
    { $testPortParams += @{ TCP = $true } } 
    else 
    { $testPortParams += @{ UDP = $true } } 

    $outLog = "portTest-$($entry.port)-$($entry.protocol).txt" 

    $computersToCheck | 
     Test-Port @testPortParams | 
     Sort-Object -Property open,name -descending | 
     format-table -auto -outVariable status 
    Add-Content -path $outLog -value $status 
} 

확실히 피더 스크립트를 작성하여 스캔 할 IP 주소 및 포트 범위를 작성할 수 있습니다.

관련 문제