いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

PowerShellで実行するシンプルなポート解放確認スクリプト

関連記事

GitHub - devlights/blog-summary: ブログ「いろいろ備忘録日記」のまとめ

概要

以下、自分用のメモです。よく忘れるのでここにメモメモ。。。

たまーに、接続先のサーバのポートが開いてるのかどうかをちょっとだけ確認したい場合があります。

そういうときに、以下のようなPowerShellスクリプトをよく使っています。でも、必要なときにコード忘れているので、ついでにここに貼り付け。

やってることは、TcpClient作って接続しているだけです。何の言語でも実現できますね。

# スキャンするターゲットのIPアドレスまたはホスト名
$target = "xxx.xxx.xxx.xxx"

# スキャンするポート範囲
$startPort = 50020
$endPort = 50029

# 指定したポート範囲でスキャンを実行
for ($port = $startPort; $port -le $endPort; $port++) {
    $tcpClient = New-Object System.Net.Sockets.TcpClient
    $asyncResult = $tcpClient.BeginConnect($target, $port, $null, $null)
    $waitHandle = $asyncResult.AsyncWaitHandle
    $timeout = 1000 # タイムアウト時間(ミリ秒)

    if ($waitHandle.WaitOne($timeout, $false)) {
        if ($tcpClient.Connected) {
            $tcpClient.Close()
            "$port open"
        } else {
            "$port closed"
        }
    } else {
        "$port closed"
    }

    $tcpClient.Close()
}

参考情報


過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。