
PowerShellにおけるポート指定の疎通確認は、Test-NetConnection 宛先ホスト名 -Port ポート番号 を実行するだけで完了します。実行後に表示される「TcpTestSucceeded : True」(またはICMP疎通時の「PingSucceeded : True」)という出力で、特定のポートやネットワークパスが開通しているかを即座に判定できます。
Windowsのネットワークトラブルシューティングにおいて、従来のpingコマンドやtelnetクライアントを使用する場面は減少し、現在はPowerShell標準のTest-NetConnectionコマンドレットを活用する方法が標準的です。この記事では、基本コマンドの入力例からパラメーターの活用法、応答が「False」になった場合のトラブルシューティング手順までを網羅して詳しく解説します。
Test-NetConnection(tnc)とは?pingやtelnetとの違い
Test-NetConnectionは、Windows PowerShell 4.0(Windows 8.1 / Windows Server 2012 R2)以降のOSに標準搭載されている高度なネットワーク診断用コマンドレットです。エイリアス(短縮名)として「tnc」が用意されており、短縮コマンドとしても素早く実行できます。
ネットワークの疎通確認を行う際、従来はpingやtelnet、または外部ツールがよく使われていましたが、現在のWindows環境ではTest-NetConnectionを利用するのが最も効率的です。それぞれの機能差は以下の比較表の通りです。
| 比較項目 | Test-NetConnection | ping コマンド | telnet クライアント |
|---|---|---|---|
| 使用プロトコル | TCP / ICMP | ICMP のみ | TCP のみ |
| ポート番号の指定 | 可能(-Port オプション) | 不可 | 可能 |
| 標準機能での利用 | 標準搭載(インストール不要) | 標準搭載 | Windowsの追加機能から有効化が必要 |
| 経路追跡(TraceRoute) | 可能(-TraceRoute オプション) | 不可(tracertコマンドが必要) | 不可 |
| 結果のスクリプト活用 | 容易(True/Falseオブジェクトで取得) | 文字列解析が必要 | 困難 |
従来のpingコマンドはICMPプロトコルを使用するため、セキュリティ上の理由でICMPがブロックされているサーバーに対しては応答なし(タイムアウト)となってしまいます。ICMP応答がなくてもWebサービス(80/443)やデータベース(3306/1433)のTCPポートが開放されていれば通信は成立するため、正確な確認には特定のプロトコル・ポートに特化したテストが必要です。コマンドプロンプトにおけるpingの動作仕様については「コマンドプロンプトのpingで応答なし?原因特定と対処法5ステップ」でも詳しく触れていますが、特定のTCPポートの導通を調査したい場合はTest-NetConnectionの利用が適しています。
また、WindowsでTCPポートの疎通確認を行う全体的な流れや背景については「疎通確認をWindowsで!ポート指定コマンドの使い方と手順」を併せて参照することで、コマンド選択の幅が広がります。
【手順】Test-NetConnectionで疎通確認を行う基本ステップ
Test-NetConnectionを使ってネットワークの疎通確認を行う基本手順を解説します。事前準備から結果の確認まで、以下の3ステップに従って操作を進めてください。
- 前提条件の確認とPowerShellの起動
Windowsのスタートメニューを右クリックし、「ターミナル」または「PowerShell」を選択します。ネットワークインターフェースの詳細情報やルーターのルーティングテーブル情報を取得する場合があるため、可能な限り「管理者として実行」で起動することを推奨します。 - コマンドの入力と実行
確認したい対象のホスト名(またはIPアドレス)とポート番号を指定してコマンドを実行します。
エイリアスを利用する場合は以下のように記述することも可能です。Test-NetConnection example.com -Port 443tnc 192.168.1.100 -Port 80 - 実行結果の判定
画面に出力されたテキストの中から「TcpTestSucceeded」の項目を確認します。値が「True」であれば指定ポートでの通信が成功しており、「False」であれば何らかの要因で通信が遮断または拒否されています。
実行結果の読み方と主要なプロパティ
Test-NetConnectionを実行すると、標準では以下のような構造化されたデータが出力されます。
ComputerName : example.com
RemoteAddress : 93.184.216.34
RemotePort : 443
InterfaceAlias : Wi-Fi
SourceAddress : 192.168.1.15
TcpTestSucceeded : True
各出力項目の意味は以下の通りです。
- ComputerName: 指定した宛先のホスト名またはIPアドレス
- RemoteAddress: DNS名前解決によって特定された相手先のIPアドレス
- RemotePort: 接続テストを実施した宛先ポート番号
- InterfaceAlias: パケットを送出したローカル送信元のネットワークインターフェース名
- SourceAddress: パケット送信時に使用されたローカル側のIPアドレス
- TcpTestSucceeded: TCPポートの疎通結果(True = 成功 / False = 失敗)
コピーして使える!状況別のTest-NetConnectionコマンド例
実務の現場で頻出するシナリオに合わせて、そのままコピー&ペーストして活用できる実用的なコマンド例を紹介します。

1. 特定のWebサーバー(80/443ポート)の通信確認
WebサイトやAPIサーバーへの接続可否を確認する場合は、HTTP(ポート80)またはHTTPS(ポート443)を指定します。
# HTTPS(443ポート)の疎通確認
Test-NetConnection -ComputerName www.google.com -Port 443
# 短縮形で実行する場合
tnc www.google.com -Port 443
2. よく使われる標準ポート名を直接指定する(CommonTCPPort)
ポート番号の数字を直接覚減していなくても、-CommonTCPPort パラメーターを使用することで代表的なサービスポートをキーワードで指定できます。
# RDP(リモートデスクトップ: 3389)の確認
Test-NetConnection 192.168.1.50 -CommonTCPPort RDP
# SMB(ファイル共有: 445)の確認
Test-NetConnection 192.168.1.50 -CommonTCPPort SMB
# HTTP(80)/ HTTPS(443)の指定
Test-NetConnection example.com -CommonTCPPort HTTP
指定可能なキーワードには HTTP、HTTPS、RDP、SMB などがあります。
3. 詳細なネットワーク情報をまとめて取得する(-InformationLevel Detailed)
ネットワーク診断時に、MACアドレスや詳細なルーティング情報も同時に確認したい場合は -InformationLevel Detailed スイッチを付与します。
Test-NetConnection 192.168.1.1 -InformationLevel Detailed
このコマンドを実行すると、名前に対応するDNS検索プロセスの詳細や、接続に使用したルートアドレスの情報が拡張表示されます。
4. ネットワーク経路(ホップ数)を追跡する(-TraceRoute)
目的地までのルーティング経路や、途中のどのルーターでパケットが詰まっているかを特定したい場合は -TraceRoute パラメーターを追加します。
Test-NetConnection example.com -TraceRoute
tracertコマンドと同等の経路追跡がPowerShell上で実施され、各中継ルーターのIPアドレスとレイテンシ(応答時間)が一覧で出力されます。
5. 複数のサーバーやポートを一括チェックするPowerShellスクリプト
複数の機器やポートの開放状況を一括で診断したい場合、PowerShellのループ処理(foreach)を組み合わせることで一元的な自動チェックが可能です。
$targets = @("192.168.1.10", "192.168.1.20", "192.168.1.30")
$ports = @(80, 443, 3389)
foreach ($target in $targets) {
foreach ($port in $ports) {
$result = Test-NetConnection -ComputerName $target -Port $port -WarningAction SilentlyContinue
[PSCustomObject]@{
Target = $target
Port = $port
Result = $result.TcpTestSucceeded
RemoteAddress = $result.RemoteAddress
}
}
}
上記のスクリプトを実行すると、各対象のテスト結果が綺麗なテーブル形式でまとめて出力されるため、定期保守や環境構築後の確認作業が飛躍的に短縮されます。
疎通確認で失敗(False)になった場合の主な原因と対処法
TcpTestSucceeded : False や PingSucceeded : False と表示された場合、どこに障害要因が存在するかを論理的に切り分ける必要があります。主な原因と対応策は以下の4点です。
| 失敗の原因 | 発生している状況 | 推奨される対処策 |
|---|---|---|
| Windows Firewallによる遮断 | 送信元または送信先OS内の防火牆(ファイアウォール)で通信が拒否されている | 受信規則・送信規則を確認し、対象のポート/プロトコルを許可するルールを追加する |
| クラウド(AWS等)のSG・ACL拒否 | クラウド環境のセキュリティグループやネットワークACLの設定不備 | インバウンド・アウトバウンドルールを再見直しする(後述のリンク参照) |
| サービス・プロセスの未起動 | 送信先のサーバー側でWebサーバーやDB等のサービスが動作していない | 対象サーバーのプロセス状態を確認し、サービスを再起動または起動させる |
| DNS名前解決の失敗 | 指定したホスト名からIPアドレスへの変換ができていない | IPアドレスで直接テストするか、DNSサーバー設定(hosts等)を見直す |
1. ローカルおよび送信先のファイヤーウォール設定確認
Windows ServerやクライアントOSに標準搭載されている「セキュリティが強化された Windows Defender ファイアウォール」によって通信がブロックされるケースが最も多発します。送信先サーバーの管理者に問い合わせ、該当するポート番号へのアクセスが受信許可ルールに登録されているか確認してください。
2. ネットワーク機器やクラウドセキュリティグループの確認
オンプレミスのルーターやL3スイッチ、あるいはクラウドプラットフォーム(AWS、Azure、Google Cloud等)の仮想ネットワークにおいてアクセス制御が機能している可能性があります。
特にAWS環境で疎通確認が取れない問題にお困りの場合は、「AWSセキュリティグループで疎通確認できない原因と解決策5選」でセキュリティグループとネットワークACLの設定差異やチェックポイントを具体的に記載していますので併せてご一読ください。
3. 他OS環境とのコマンド使い分け
システム構築の現場では、WindowsマシンからLinuxサーバーへ、あるいはLinuxサーバー同士で疎通確認を実施するシーンも多く発生します。Linuxからポート指定で疎通確認を行う場合は、curlやnc(netcat)コマンドが用いられます。Linux環境での詳細な確認テクニックについては「Linuxでcurlのポート番号指定による疎通確認と仕組み」で詳しく解説しています。
PowerShell疎通確認時によくあるトラブルとつまずきやすい点
Test-NetConnectionを使用する際、初心者が陥りがちな注意点やトラブル解決のTipsをまとめました。
実行に時間がかかる(タイムアウトの待ち時間)
Test-NetConnectionは、相手先からの応答がない場合に内部でタイムアウト待ちを発生させるため、結果が返ってくるまでに数秒〜十数秒程度の時間がかかることがあります。大量のIPアドレスに対して順番に処理を行うと全体の処理時間が大きく延伸してしまうため、事前に少数の対象で疎通確認を行うか、バックグラウンドでの並列処理(Start-ThreadJobなど)を検討してください。
PowerShell 7(Core)における動作の違い
最新のCross-Platform版であるPowerShell 7(Core)環境では、OSのネイティブモジュールに依存するコマンドレットの挙動が従来のWindows PowerShell 5.1と一部異なるケースがあります。Windows標準のネットワークモジュールがロードされていない場合は、明示的にWindows PowerShellを呼び出すか、System.Net.Sockets.TcpClient クラスを直接利用したC#ライクなコードで代用することが可能です。
# PowerShell 7等で.NETクラスを直接利用した高速なTCP確認例
$tcp = New-Object System.Net.Sockets.TcpClient
try {
$tcp.Connect("192.168.1.10", 443)
Write-Host "接続成功"
} catch {
Write-Host "接続失敗"
} finally {
$tcp.Close()
}
よくある質問(FAQ)
Q1. PowerShellでtelnetのように特定のポートへ対話的に接続できますか?
Test-NetConnectionはポート開通の判定(True/False)を行うためのツールであり、telnetのような対話的セッションの確立やデータの送信機能は持っていません。画面経由で文字を送受信する作業が必要な場合は、Windows機能の「Telnet クライアント」を有効化するか、PuTTYやTera Termなどの専用ターミナルエミュレータをご利用ください。
Q2. コマンド結果をCSVファイルなどに保存してログに残すにはどうすればよいですか?
PowerShellのオブジェクト出力を活かし、パイプライン(|)を使って Export-Csv コマンドレットに引き渡すことで簡単にCSV化できます。
Test-NetConnection -ComputerName 192.168.1.10 -Port 80 | Select-Object ComputerName, RemoteAddress, RemotePort, TcpTestSucceeded | Export-Csv -Path "C:\logs\port_check.csv" -NoTypeInformation -Encoding UTF8
Q3. UDPポートの疎通確認もTest-NetConnectionで可能ですか?
Test-NetConnectionはTCPプロトコルおよびICMP(ping)のテストに特化しており、UDPポート(例: DNSの53、NTPの123など)の疎通テストには対応していません。UDPポートの診断を行う場合は、Sysinternalsツールである「PsPing」コマンドや、PortQryなどの外部診断ツールの利用が必要です。

社内のシステム保守や問い合わせ対応を自動化するなら
本記事で紹介したTest-NetConnectionを活用したネットワークチェックは、日常的な社内インフラの保守や障害一次切り分けにおいて不可欠な作業です。しかし、社内SEや情シス部門の皆様にとって、ネットワーク診断だけでなく「社内ユーザーや顧客からの設定・接続トラブルに関する問い合わせ」の対応自体が大きな業務負荷となっているケースは少なくありません。
株式会社LaruVisona(東京都豊島区)では、ITインフラ運用や社内サポートの問い合わせ対応を効率化するAIソリューションを提供しています。
- 国産オールインワンAIチャットボット: 社内マニュアルやQ&AデータをRAG学習させ、WebサイトやLINE・Slackへ1行のタグ設置で簡単に埋め込める「AIチャットボット(LARUbot)」は、初期費用0円・月額27,500円(Starterプラン)からご利用いただけます。
- AI電話受付: 電話問い合わせの自動化を実現する「AI電話受付 LARU CALL」は、いまの電話番号のまま転送設定するだけで、AIが自動で用件・お名前をヒアリングして担当者へ通知します。
- 顧客・案件管理: 受付データや問い合わせ履歴を一元管理できる「顧客・案件管理(CRM/SFA)」や、オウンドメディアの集客を強化する「料金プラン」別の「SEO自動化 LARU SEO」オプションなど、企業のデジタル化をトータルで支援します。
すべての有料プランにおいて初月無料トライアル(約30日間・全機能)を提供しており、最低利用期間の縛りや解約違約金もありません。社内のITサポート作業の自動化やAI活用に関心をお持ちの企業様は、ぜひお気軽に株式会社LaruVisonaへお問い合わせください。