PowerShellでTCP接続を可視化する:Get-NetTCPConnection+Out-GridView

Sorry, this entry is only available in 日本語.

1. はじめに

PowerShell を使うと、Windows 上で動作しているプロセスがどのアドレスと通信しているかを簡単に調査できます。 本記事では、TCP 接続情報を取得し、プロセス名と紐づけて Out-GridView で可視化するワンライナーを解説します。 GUI でフィルタリングできるため、ネットワーク調査やトラブルシューティングに非常に便利です。

2. コマンド全体の紹介

このワンライナーは、TCP 接続情報を取得し、不要な状態を除外し、プロセス名を付加したうえで GUI 表示します。

3. 各コマンドの役割と詳細解説

3-1. Get-NetTCPConnection

Get-NetTCPConnection は、Windows の TCP 接続情報を取得する PowerShell コマンドです。 取得できる主な情報は以下の通りです。

  • LocalAddress / LocalPort
  • RemoteAddress / RemotePort
  • State(Established, Listen, TimeWait など)
  • OwningProcess(プロセス ID)

従来の netstat と異なり、PowerShell オブジェクトとして扱えるため、加工やフィルタリングが容易です。

3-2. Where-Object state -ne Bound

state プロパティは TCP の状態を表します。 その中で Bound は「ローカルポートを確保しているが、まだ Listen していない状態」です。

多くの場合、調査対象外となるため、このワンライナーでは Bound を除外しています。

3-3. Select-Object による必要項目の抽出

次に、必要なプロパティだけを抽出します。

ここでは、TCP 接続の基本情報に加えて、計算列(@{...})を使い、プロセス ID からプロセス名を取得しています。

  • OwningProcess … プロセス ID
  • (Get-Process -Id $_.OwningProcess).ProcessName … プロセス名を取得

これにより、「どのプロセスが通信しているか」を一覧で確認できます。

3-4. Out-GridView による GUI 表示

Out-GridView は、PowerShell の出力を GUI で表示するためのコマンドです。

主な特徴:

  • 列ごとのフィルタリング
  • ソート
  • 検索ボックスでの絞り込み

ネットワーク調査では、特定ポートや特定プロセスを探す場面が多いため、GUI での操作は非常に便利です。

4. 実行例と画面イメージ

実行すると、以下のような GUI ウィンドウが表示されます(イメージ)。

  • LocalAddress / LocalPort
  • RemoteAddress / RemotePort
  • State
  • OwningProcess
  • ProcessName

例えば、ProcessName 列で「chrome」をフィルタリングすれば、Chrome が行っている通信だけを確認できます。

5. 応用例

5-1. 特定ポートを使用しているプロセスを調べる

5-2. 特定プロセスの通信だけを表示する

5-3. CSV に出力する

6. まとめ

本記事で紹介したワンライナーは、TCP 接続をプロセス単位で可視化する強力なツールです。

  • PowerShell オブジェクトとして扱えるため加工が容易
  • プロセス名と紐づけて通信状況を確認できる
  • Out-GridView により GUI で直感的に調査できる

ネットワーク調査やトラブルシューティングの際に、ぜひ活用してみてください。