netstatコマンドでWindowsのリスニングポートとPIDを確認する方法
別の記事では、コンピューターのポートとは何か、そしてその用途について解説しました。では、ポート情報を使って他に何ができるのでしょうか?コンピューターに出入りするすべてのトラフィックはポートを通過するため、ポートの状態をチェックすれば、パソコンが何をしているのかを把握できます。あるポートが通信を待ち受けていない?あるいは、本来使われるべきではないプロセスがポートを占有していない?
この記事では、Windowsのコマンドnetstatを使って、リスニングポート(待ち受けポート)とPID(プロセスID)を確認する方法を解説します。さらに、取得した情報を活用する方法もご紹介します。
netstatとは?
netstatコマンドの名前は、「network(ネットワーク)」と「statistics(統計)」を組み合わせたものです。netstatコマンドは、Windows XPからWindows 10まで、すべてのバージョンのWindowsで動作します。UnixやLinuxなど他のOSでも利用されていますが、ここではWindowsに絞って説明します。
netstatから得られる主な情報は以下の通りです。
- ポートが使用しているプロトコル名(TCPまたはUDP)
- ローカルIPアドレス、コンピューター名、使用中のポート番号
- 接続先のIPアドレスとポート番号
- TCP接続の状態。各状態の詳細については、RFC 793の「イベント処理(Event Processing)」セクションを参照してください。
netstatでリスニングポートとPIDを確認する手順
- キーボードのWinキー + Xを押し、表示されたメニューからコマンドプロンプトを選択します。

- 次のコマンドを入力します。
netstat -a -n -o
netstatのパラメーターは、多くのコマンドと異なりスラッシュ(/)ではなくハイフン(-)で指定することに注意してください。-aはすべてのアクティブな接続と、コンピューターがリスニングしているポートを表示します。
-nはIPアドレスとポート番号を数値のみで表示するよう指示します。名前解決を行わないため、表示がより速く、すっきりします。-oはPIDを含めて表示するよう指示します。このPIDは後ほど、特定のポートを使用しているプロセスを特定するのに役立ちます。

- 実行結果を確認し、アドレス、ポート番号、状態、PIDをメモしておきましょう。例として、ポート63240を使用しているのが何なのか知りたいとします。この接続のPIDは8552で、IPアドレス172.217.12.138のポート443に接続していることがわかります。

そのポートを使用しているのはどのプロセス?
- タスクマネージャーを開きます。最も簡単な方法は、Ctrl + Shift + Escのキーボードショートカットを使うことです。

- 詳細タブをクリックします。見つけやすくするために、PID列のヘッダーをクリックして、PID順に並べ替えましょう。

- PID 8552までスクロールし、それがどのプロセスかを確認します。この場合はgoogledrivesync.exeです。しかし、本当にそうなのでしょうか?ウイルスの中には、正規のプロセスに見せかけたものが存在する場合があります。

- Webブラウザーでipinfo.ioにアクセスし、IPアドレス172.217.12.138を入力します。すると、このIPアドレスがGoogleに登録されていることがわかります。つまり、このgoogledrivesync.exeは正当なプロセスだということが確認できました。

PowerShellでポート・PID・プロセス名を一括取得する方法
PowerShellは、Microsoftが提供する新しいコマンドラインインターフェースです。「新しい」といっても、すでに複数のバージョンで利用可能になっています。ホームユーザーの方でも、PowerShellを学んでおく価値は十分にあります。
ほとんどのWindowsコマンドはPowerShellでも動作し、さらにPowerShell独自のコマンドレット(cmdlet、発音は「コマンドレット」)と組み合わせることができます。以下のスクリプトはWinteltools.comのJoe氏が提供しているものです。
- メモ帳を開き、以下のコードを入力します。
$netstat = netstat -aon | Select-String -pattern "(TCP|UDP)"
$processList = Get-Process
foreach ($result in $netstat) {
$splitArray = $result -split " "
$procID = $splitArray[$splitArray.length – 1]
$processName = $processList | Where-Object {$_.id -eq $procID} | select processname
$splitArray[$splitArray.length – 1] = $procID + " " + $processName.processname
$splitArray -join " "
}
- ファイルをget-NetstatProcessName.ps1という名前で保存します。保存場所も忘れずにメモしておいてください。保存時にはファイルの種類:をすべてのファイル(*.*)に変更することが重要です。そうしないとget-NetstatProcessName.ps1.txtとして保存され、スクリプトとして機能しなくなります。

- PowerShellを開き、スクリプトを保存した場所へ移動します。この例では
cd C:\Scriptsを実行します。Enterキーを押してコマンドを実行しましょう。

- ドットソーシング(dot-sourcing)を使ってスクリプトを実行します。これは、ファイル名の前に./を付けることを意味します。コマンドは
./get-NetstatProcessName.ps1となります。

- これで、従来のnetstat情報に加えてプロセス名もすべて表示されるようになります。もうタスクマネージャーを開く必要はありません。

まとめ
この記事では、netstatコマンドを使ってリスニングポートを確認する2つの方法を紹介しました。従来のコマンドプロンプトで使う方法と、PowerShellスクリプトとして活用する方法です。netstatが提供してくれる情報を活用すれば、自分のコンピューターが何をしているのかを詳しく把握できるようになります。
netstatが便利なツールだと感じたら、tracert、ipconfig、nslookupといった他のWindows TCP/IPユーティリティも試してみてください。また、リソースモニターを使えば、隠れたWebサイトやインターネット接続をより詳しく調べることもできます。パソコンの動作を正確に把握するためにできることはたくさんあります。
netstatを使って問題を解決した経験はありますか?ぜひ、どんな対処をしたのか教えてください。netstatの使い方について質問がある方は、下のコメント欄でお気軽にお尋ねください。
-
Windows 10でCortana(コルタナ)を有効化してセットアップする方法【マイク設定も解説】
この記事では、Windows 10に搭載されたデジタルアシスタントCortana(コルタナ)のセットアップ方法と、「Hey Cortana(コルタナさん)」の有効化手順をご紹介します。あわせて、Cortanaがあなたの声を正しく認識できるようにするためのマイク設定の方法についても詳しく解説します。 Cortanaは、Windows 10に標準搭載されているデジタルアシスタントです。Web検索はもちろん、PC内のファイルやアプリの検索、カレンダーの管理、リマインダーの設定はもちろん、ちょっとした雑談まで楽しめる頼れる存在です。 Windows 10でCortanaをセットアップする手順 まず、タ
-
Windowsサンドボックスの使い方と活用メリットを徹底解説
Windows 10の2019年5月アップデート(ビルド1903)には、注目すべき新機能が搭載されました。その名は「Windowsサンドボックス」。主に上級者向けの機能ですが、日常的なさまざまなタスクの安全性を高めることにも役立ちます。数秒でメインマシンから完全に切り離された隔離環境のWindowsを起動でき、セッションを終了するとその環境は自動的に破棄されます。Windowsサンドボックスが解決する課題サンドボックスは、Windowsの長年の悩みの種だった「ソフトウェアのインストールが不透明で、気づけばシステムを壊している」という問題についに決着をつけました。使い捨て前提の環境でさまざまなソ