2

ポートが開いているかどうかを確認するために radom IP またはホスト名をチェックするスクリプトを書きたいと思います。これが私がこれまでに持っているものです。スクリプト名は checkports です。

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()
   }
}

次の方法で値を入力したいと思います: チェックポート

IPアドレスを読み取ったり、結果を表示したりしていないようです。

このスクリプトで私が間違っていることを誰かが指摘できるかどうか疑問に思っていましたか?

4

1 に答える 1

1

Boe Prox の「Test-Port」機能を同様のスキャン/レポート機能に使用できました。コードは PoshCode で入手できます。

http://poshcode.org/2514

ディレクトリの状態についてポートをテストする必要があったとき、「ポート」列と「プロトコル」列を含む 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 アドレスとポートの範囲を作成することもできます。

于 2013-11-01T23:00:05.437 に答える