サーバー管理やネットワークトラブルシューティングの現場では、「指定したポートが開いているか(接続できるか)」を確認することがよくあります。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
はネットワーク診断やポートチェックに非常に便利なコマンドレットであり、日常的なインフラ運用の中でも活用頻度が高いツールです。スクリプト化すれば、複数台への自動監視にも応用できます。ポート開放状況の確認や、サービス障害の初期調査などにぜひ活用してみてください。