【PowerShell】特定のポートが開いているかチェックする方法|Test-NetConnectionの活用

【PowerShell】特定のポートが開いているかチェックする方法|Test-NetConnectionの活用 PowerShell

サーバー管理やネットワークトラブルシューティングの現場では、「指定したポートが開いているか(接続できるか)」を確認することがよくあります。PowerShellでは Test-NetConnection コマンドレットを使うことで、簡単にポートの疎通確認を行うことができます。この記事では、特定ポートの開放チェック方法や活用例を紹介します。

基本構文

Test-NetConnection -ComputerName ホスト名またはIPアドレス -Port ポート番号

たとえば、google.com の 443番ポート(HTTPS)に接続できるかを確認する場合:

Test-NetConnection -ComputerName google.com -Port 443

結果の見方

コマンドを実行すると、以下のような結果が返ってきます:


ComputerName     : google.com
RemoteAddress    : 142.250.196.110
RemotePort       : 443
InterfaceAlias   : Ethernet
SourceAddress    : 192.168.1.100
TcpTestSucceeded : True

「TcpTestSucceeded : True」 であれば、ポートは開いており接続可能であることを意味します。

ローカル環境でポートを確認する例

開発環境などで自分のPCの特定ポートがリッスン状態かを確認したい場合も便利です。

Test-NetConnection -ComputerName 127.0.0.1 -Port 3306

MySQLがローカルで動作していれば、3306番ポートはTrueになります。

複数ホスト・複数ポートのチェック例(スクリプト)

$hosts = @("server1.local", "server2.local")
$ports = @(22, 80, 443)

foreach ($host in $hosts) {
  foreach ($port in $ports) {
    $result = Test-NetConnection -ComputerName $host -Port $port
    Write-Output "$host:$port - " + ($result.TcpTestSucceeded ? "OK" : "NG")
  }
}

このスクリプトでは、複数のサーバーとポートの組み合わせに対して、一括で接続可否を確認します。

旧バージョンの代替:PowerShell 4以前

PowerShell 4.0以前の環境では Test-NetConnection が使えないため、代替手段として System.Net.Sockets.TcpClient を使った方法があります:

$client = New-Object System.Net.Sockets.TcpClient
$client.Connect("example.com", 80)
if ($client.Connected) {
  "接続成功"
} else {
  "接続失敗"
}
$client.Close()

まとめ

Test-NetConnection はネットワーク診断やポートチェックに非常に便利なコマンドレットであり、日常的なインフラ運用の中でも活用頻度が高いツールです。スクリプト化すれば、複数台への自動監視にも応用できます。ポート開放状況の確認や、サービス障害の初期調査などにぜひ活用してみてください。