検索
連載

【 Get-NetTCPConnection 】コマンドレット――TCPポートのコネクションを確認するWindows PowerShell基本Tips(36)

本連載は、PowerShellコマンドレットについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は「Get-NetTCPConnection」コマンドレットを解説します。

Share
Tweet
LINE
Hatena
「Windows PowerShell基本Tips」のインデックス

連載目次

 本連載では、Windows PowerShellの基本的なコマンドレットについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、TCPポートのコネクションを確認する「Get-NetTCPConnection」コマンドレットです。

Get-NetTCPConnectionコマンドレットとは?

 TCP/IPによる通信は、宛先のIPアドレスと送信元/送信先ポート番号の組み合わせで行われます。従って、通信障害が発生した場合、対象のコンピュータがどのホストとどの通信ポートを利用して通信しているかを把握することが重要になります。

 コマンドプロンプトであれば「netstat」コマンドを使用して調査しますが、PowerShellの場合は「Get-NetTCPConnection」コマンドレットを使用します。

 netstatコマンドではTCPのコネクション情報とUDPの待ち受け状況の両方を確認できますが、Get-NetTCPConnectionコマンドレットはTCPのコネクション情報のみの確認となります。しかし、netstatコマンドよりも多くの情報が表示されるので、非常に便利なコマンドレットです。

Get-NetTCPConnectionコマンドレットの書式

Get-NetTCPConnection [オプション]


Get-NetTCPConnectionコマンドレットの主なオプション

オプション 意味
-RemoteAddress リモートホストのホスト名、もしくはIPアドレスを指定する。省略可能
-RemotePort 送信先ポート番号を指定する。省略可能
-State TCPのステート(状態)を指定して、該当するステートの通信のみ表示する。13種類のステートから指定できる。省略可能
-OwningProcess 指定したプロセスIDで使用しているTCPのコネクションを表示する。省略可能


TCPのコネクションを確認する

 Get-NetTCPConnectionコマンドレットをオプションなしで実行すると、待ち受け中、通信中を問わず、全てのTCPのコネクションを表示します(画面1)。

コマンドレット実行例

Get-NetTCPConnection

画面1
画面1 「netstat -an」コマンドと同じように、待ち受け中、通信中を問わず、全てのTCPコネクションが表示される


ステート(状態)でフィルタリングする

 Get-NetTCPConnectionコマンドレットを「-State」オプションを指定して実行すると、特定のステート(状態)のTCPコネクションを表示します。例えば、通信中のTCPコネクションのみを表示したい場合には、「-State」オプションで「Established」を指定します(画面2)。

コマンドレット実行例

Get-NetTCPConnection -State Established

画面2
画面2 「-State」オプションを利用して、通信中のコネクションのみを表示した


TCPコネクションを使用しているプロセスを確認する

 Get-NetTCPConnectionコマンドレットは7個のメソッド、30個のプロパティ、3個のスクリプトプロパティを持っています。その中の「OwningProcess」プロパティには、そのコネクションを使用しているプロセスIDが格納されています。

 netstatコマンドで「b」オプションを使用して実行すると「プロセス名」を表示できますが、Get-NetTCPConnectionコマンドレットでは「プロセスID」しか表示できません。

 そこで、Get-NetTCPConnectionコマンドレットでプロセスIDを確認し、プロセスIDを指定して「Get-Process」コマンドレットを実行することで、そのTCPコネクションを使用しているプロセス名を特定することができます(画面3)。

コマンドレット実行例

Get-NetTCPConnection -State Established | Select LocalAddress, LocalPort, Remoteaddress, RemotePort, State, OwningProcess | FT -AutoSize

画面3
画面3 OwningProcessプロパティでプロセスIDを確認し、「Get-Process」コマンドレットでプロセス名を特定した


TCPコネクションの作成時刻を確認する

 Get-NetTCPConnectionコマンドレットには「CreationTime」というプロパティもあります。CreationTimeプロパティには、そのコネクションが作成された「時刻」が格納されています。このプロパティを確認することで、長時間にわたり使用中のコネクションを確認できます(画面4)。

コマンドレット実行例

Get-NetTCPConnection -State Established | Select LocalAddress, LocalPort, Remoteaddress, RemotePort, State, CreationTime | FT -AutoSize

画面4
画面4 CreationTimeプロパティから、2時間以上使用され続けているコネクションを確認できた

筆者紹介

後藤 諭史(ごとう さとし)

Microsoft MVP for Cloud and Datacenter Management(2012-2023)。現業の傍ら、コミュニティーイベントでの登壇や著作にてMicrosoftテクノロジーに関する技術情報の発信、共有を続けている。ネットワークやハードウェアといった物理層に近いところが大好きな、昔ながらのインフラ屋さん。得意技はケーブル整線。近著は『詳解! Windows Server仮想ネットワーク』(日経BP社)。


Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る