ネットワークの疎通確認をしたいけどpingだとポート番号まで確認できなくて困ったことってありますよね。WebサーバーやDBへの接続確認では「IPは通る、でも本当にポートまで届いているのか」が知りたい場面が多いと思います。
さらに最近のWindows環境ではファイアウォールがデフォルトでpingの受信を遮断する設定になっているため「pingが通らない=通信できない」とは限らないという難しさもありますよね。
今回はPowerShellを使ってホスト名(またはIPアドレス)とポート番号をセットで疎通確認する方法を解説します。環境に応じて2つのコマンドを使い分けることで、より正確なネットワーク診断ができるようになりますよ。
この記事でわかること
- pingコマンドではポート番号を指定した疎通確認ができない理由
Test-Connection(PowerShell 7.0以上)でシンプルに確認する方法Test-NetConnection(PowerShell 5.1以上)で詳細情報を取得する方法- 2つのコマンドの使い分け基準
pingコマンドの限界とポート指定確認の必要性
pingではポート番号を確認できない
pingコマンドは便利なネットワーク診断ツールですが、ICMPプロトコルを使用しているためTCP/UDPのポート番号を指定した確認はできません。
例えば以下のようなシーンでは困りますよね。
- Webサーバー(ポート80や443)が動いているか確認したい。
- データベース(ポート3306や5432)への接続を確認したい。
- 特定のアプリケーションポートが開いているか調べたい。
Windowsファイアウォールとpingの関係
Windows 10以降のOSではセキュリティ強化のためファイアウォールがデフォルトでICMPエコー要求(ping)をブロックします。このためpingが失敗した原因が「ネットワークが不通」なのか「ファイアウォールで遮断されている」のか判断できないこともあります。
PowerShellのポート指定確認コマンドを使えばTCP接続を直接試すことができ、より実用的な疎通確認が可能になります。
PowerShellでポート疎通を確認する2つの方法
PowerShellにはポート番号を指定して疎通確認できるコマンドが2種類用意されています。それぞれ特徴が異なるので用途に応じて使い分けましょう。
| コマンド名 | 必要なバージョン | 実行速度 | 出力情報 | おすすめシーン |
|---|---|---|---|---|
| Test-Connection | PowerShell 7.0以上 | 高速 | True / False | シンプルな確認、スクリプト組み込み |
| Test-NetConnection | PowerShell 5.1以上 | やや遅い | 詳細情報 | トラブルシューティング、詳細調査 |
Test-Connectionコマンドの使い方【高速・シンプル】
基本的な構文
PowerShell 7.0以上が使用可能な環境ではTest-Connectionコマンドが最もシンプルで高速です。実行結果はTrue(疎通可能)またはFalse(疎通不可)で返ってきます。
公式ドキュメントによると以下のような構文となっています。
Test-Connection
Test-Connection (Microsoft.PowerShell.Management) – PowerShell | Microsoft Learn
[-TargetName] <string[]>
-TcpPort <int>
[-IPv4]
[-IPv6]
[-ResolveDestination]
[-Source <string>]
[-Count <int>]
[-Delay <int>]
[-Repeat]
[-Quiet]
[-TimeoutSeconds <int>]
[-Detailed]
[<CommonParameters>]
実行例:疎通OKの場合
ローカルホスト(127.0.0.1)のポート8080番に対して疎通確認を行う例です。
Test-Connection 127.0.0.1 -TcpPort 8080Trueこの結果は、ポート8080で何らかのサービスが待ち受けておりTCP接続が確立できることを意味します。
実行例:疎通NGの場合
存在しないポート番号(12345番)に対して確認を行った場合です。
Test-Connection 127.0.0.1 -TcpPort 12345FalseFalseが返ってきた場合、以下のいずれかの可能性があります。
- 指定したポートでサービスが起動していない。
- ファイアウォールでポートがブロックされている。
- ネットワーク的に到達できない。
外部サーバーへの接続確認例
実際の業務では外部のWebサーバーやAPIサーバーへの疎通確認も行いますよね。以下はGoogle(8.8.8.8)の53番ポート(DNS)への接続確認例です。
Test-Connection 8.8.8.8 -TcpPort 53Trueスクリプトでの活用例
Test-Connectionは戻り値がTrue/FalseなのでPowerShellスクリプト内での条件分岐に使いやすいという利点もあります。
$result = Test-Connection example.com -TcpPort 443
if ($result) {
Write-Host "HTTPS接続OK"
} else {
Write-Host "HTTPS接続NG"
}Test-NetConnectionコマンドの使い方【詳細情報取得】
基本的な構文
PowerShell 5.1以上(Windows 10標準搭載)で使用可能なTest-NetConnectionはTest-Connectionより詳細な情報を取得できます。ただし実行に若干時間がかかる点には注意が必要です。
公式ドキュメントによると以下のような構文となっています(参考:Microsoft Learn – Test-NetConnection)。
Test-NetConnection
Test-NetConnection (NetTCPIP) | Microsoft Learn
[[-ComputerName] <String>]
-Port <Int32>
[-InformationLevel <String>]
[<CommonParameters>]
実行例:疎通OKの場合
ローカルホストのポート8080番に対して確認を行った例です。
Test-NetConnection 127.0.0.1 -Port 8080ComputerName : 127.0.0.1
RemoteAddress : 127.0.0.1
RemotePort : 8080
InterfaceAlias : Loopback Pseudo-Interface 1
SourceAddress : 127.0.0.1
TcpTestSucceeded : TrueTest-Connectionと異なり以下の詳細情報が取得できます。
- RemoteAddress: 接続先のIPアドレス。
- RemotePort: 接続先のポート番号。
- InterfaceAlias: 使用されたネットワークインターフェース名。
- SourceAddress: 接続元のIPアドレス。
- TcpTestSucceeded: TCP接続が成功したかどうか(True/False)。
実行例:疎通NGの場合
存在しないポート番号への接続を試みた場合です。
Test-NetConnection 127.0.0.1 -Port 12345WARNING: TCP connect to (127.0.0.1 : 12345) failed
ComputerName : 127.0.0.1
RemoteAddress : 127.0.0.1
RemotePort : 12345
InterfaceAlias : Loopback Pseudo-Interface 1
SourceAddress : 127.0.0.1
PingSucceeded : True
PingReplyDetails (RTT) : 0 ms
TcpTestSucceeded : False注目すべきはPingSucceeded : Trueの部分です。「pingは通るけど指定したポートへのTCP接続は失敗した」ことを示しています。この情報があることで、ネットワーク自体は到達可能だがサービスが起動していない(またはファイアウォールでブロックされている)と判断できるわけですね。
トラブルシューティングでの活用
Test-NetConnectionはネットワークトラブルの切り分けに非常に役立ちます。
Test-NetConnection db-server.example.com -Port 3306例えば上記のコマンドでデータベースサーバーのMySQLポート(3306)への接続を確認しPingSucceededとTcpTestSucceededの組み合わせから原因を特定できます。
2つのコマンドの使い分けガイド
どちらのコマンドを使うべきか迷ったときの判断基準をまとめました。
Test-Connectionを使うべきケース
- PowerShell 7.0以上が利用可能な環境。
- 単純に「接続できるかどうか」だけを高速に確認したい。
- スクリプト内で条件分岐に使いたい。
- 複数のホスト・ポートを連続で確認したい。
Test-NetConnectionを使うべきケース
- PowerShell 5.1環境(Windows標準)で実行したい。
- 詳細なネットワーク情報も同時に取得したい。
- トラブルシューティングで原因を切り分けたい。
- pingの疎通状況も併せて確認したい。
PowerShellの起動方法についてはこちらでも解説してます。

Q&A
まとめ
PowerShellでポート番号を指定した疎通確認を行う方法について解説しました。
- pingコマンドではポート番号を指定した確認ができないよ。
Test-Connection(PowerShell 7.0以上)は高速でシンプル、戻り値がTrue/Falseだよ。Test-NetConnection(PowerShell 5.1以上)は詳細情報が取得できてトラブルシューティングに最適だよ。PingSucceededとTcpTestSucceededを組み合わせることで障害の原因を切り分けられるよ。
ネットワーク確認と組み合わせて使いたい、PowerShellでのログ監視はこちらでも紹介しています。





