検索
連載

【 Get-SmbSession 】コマンドレット――確立されているSMBセッションに関する情報を取得するWindows PowerShell基本Tips(74)

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

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

連載目次

 本連載では、Windows PowerShellの基本的なコマンドレットについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、確立されているSMBセッションの情報を取得する「Get-SmbSession」コマンドレットです。

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

 ネットワーク経由でファイルを共有する場合、サーバとクライアントの間では共通のプロトコルで通信を行い、ファイルをやりとりします。

 Windowsでファイルを共有する際に用いられるプロトコルとして、最も有名なのが「SMB(Server Message Block)」でしょう。プロトコルとしてのSMBに関しては、@ITをはじめとするWeb記事、書籍などで詳細に解説されているため説明を割愛しますが、誰がセッションを確立しているかなど、現在のセッション情報を把握することは、Windowsネットワークの管理においては非常に重要なポイントの一つです。

 Get-SmbSessionコマンドレットでは、現在サーバとして確立しているSMBセッションに関して、誰がどこからアクセスしてきているかなどの詳細情報を取得することが可能です。

 コマンドプロンプトであれば「net」コマンドの「session」オプションを付与しての実行になりますが、Get-SmbSessionコマンドレットであればより詳細な情報を取得することができます。

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

Get-SmbSession [オプション]


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

オプション 意味
-SessionId 取得したいSMBセッションのセッションIDを指定する。省略可能
-ClientComputerName 取得したいセッションを確立しているIPアドレスを指定する。省略可能
-ClientUserName 取得したいセッションを確立しているユーザー名を指定する。省略可能


確立されているSMBセッションの情報を取得する

 オプションを指定せずにGet-SmbSessionコマンドレット実行すると、基本的なセッション情報を表示します(画面1)。

 取得可能な情報は「セッションID」「クライアントコンピュータ名(IPアドレス)」「クライアントユーザー名」「開いているファイル数」です。なお、Get-SmbSessionコマンドレットは、管理者権限で実行する必要があります。

コマンドレット実行例

Get-SmbSession

ALT
Get-SmbSessionコマンドレットをオプションなしで実行した結果


クライアントのIPアドレスを指定してSMBセッションの情報を取得する

 Get-SmbSessionコマンドレットで特定のクライアントの情報だけを取得したい場合は、「-ClientComputerName」オプションを利用してクライアントのIPアドレスを指定します(画面2)。

コマンドレット実行例

Get-SmbSession -ClientComputerName "172.16.30.175"

ALT
Get-SmbSessionコマンドレットで「-ClientComputerName」オプションを指定して、特定のクライアントの情報を取得した


Format-Listを使用して詳細情報を取得する

 「Format-List」を併用すると、SMBセッションの詳細情報を取得できます。Format-Listを併用する場合は、以下のコマンドレット実行例のようにパイプ(|)でつないで実行します。Format-Listに対してオプションを付与せずに実行すると、代表的なプロパティを取得できます(画面3)。

コマンドレット実行例

Get-SmbSession | Format-List

ALT
Get-SmbSessionとFormat-Listをパイプ(|)でつないで併用するとSMBセッションの詳細情報を取得できる

 さらに、Format-Listに「*」オプションを付与して実行すると、取得可能なプロパティの全てを取得できます(画面4)。

コマンドレット実行例

Get-SmbSession | Format-List *

ALT
Format-Listに「*」オプションを付与して実行すると、取得可能なプロパティの全てを取得できる

 この実行例ではオプションなしの実行時に取得可能な情報の他、セッションの経過時間やアイドル時間、ダイアレクト(方言)を取得可能です。

 ダイアレクトに関する詳細は@ITの記事「ファイル共有プロトコル、SMBとCIFSの違いを正しく理解できていますか?(後編)」を参照していただきたいのですが、現在ネゴシエーションしているSMBのバージョンを指しています。

 基本的な情報とネゴシエーションしたダイアレクトを取得したい場合は、以下のようなコマンドレットを実行します(画面5)。

コマンドレット実行例

Get-SmbSession | Format-Table SessionId,ClientComputerName,ClientUserName,NumOpens,Dialect

ネゴシエーションしているダイアレクトも併せて取得した

 画面5では、クライアントの1台がSMB 3.0.2でネゴシエーションしていることが分かります。なお、SMB 3.0.2を使用するこのクライアントは「Windows Server 2012 R2」であり、2023年10月に延長サポートが終了するので、早めのリプレースが必要です。

筆者紹介

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

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


Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る