Windowsにリモートデスクトップで繋げる際、セッション数などの問題から、現在サーバに接続しているユーザーとその接続元IPアドレス、ホスト名などを知りたい時がある。 UNIXの場合だと、whoコマンド、lastコマンドで接続元IPアドレスとそのユーザーが取得できるのだが、WindowsのDOSコマンドで使える「query session」だと、接続しているユーザーまではわかるが、接続元IPアドレスまでは取得することが出来ない。いちいち接続しているユーザーを元にイベントログから推測して調べるのも効率的ではない。
そんなときは、今回紹介する『PSTerminalServices』モジュールをインストールすると良いだろう。 このモジュールに用意されている「Get-TSSession」コマンドを利用することで、接続しているユーザ名と接続元IPアドレスを取得できる。
今回は、Windows 7 Professionalにこのモジュールをインストール、検証することにする。
1.インストール
まずは、『PSTerminalServices』モジュールのインストールを行う。 こちらからmsiファイルをダウンロードし、インストーラーを起動させる。
無事インストールかどうかを確認するため、PowerShellで以下のコマンドを実行する。
Get-Module -Name PSTerminalServices -ListAvailable
Import-Module PSTerminalServices
Get-Command -Module PSTerminalServices
実行した結果がこちら。
PS C:\Users\Work> Get-Module -Name PSTerminalServices -ListAvailable
ModuleType Name ExportedCommands
---------- ---- ----------------
Manifest PSTerminalServices {}
PS C:\Users\Work> Import-Module PSTerminalServices
PS C:\Users\Work> Get-Command -Module PSTerminalServices
CommandType Name Definition
----------- ---- ----------
Function Disconnect-TSSession ...
Function Get-TSCurrentSession ...
Function Get-TSProcess ...
Function Get-TSServers ...
Function Get-TSSession ...
Function Send-TSMessage ...
Function Stop-TSProcess ...
Function Stop-TSSession ...
無事、インストールできたことが確認出来た。
2.「Get-TSSession」コマンドの実行
さて、それでは実際に「Get-TSSession」コマンドを実行してみよう。
Get-TSSession
実際にコマンドを実行した結果がこちら。
PS C:\Users\Work> Get-TSSession
Server SessionID State IPAddress ClientName WindowStationName UserName
------ --------- ----- --------- ---------- ----------------- --------
localhost 0 Disconnected Services
localhost 1 Connected Console
localhost 2 Active 192.168.X.XXX XXXXXXXXXXX RDP-Tcp#0 Work-PC\Work
localhost 65536 Listening RDP-Tcp
無事、接続元IPアドレスが取得できた。 PowerShellならPSexecから接続して利用できるので、これならば良いだろう。
(本当は、whoコマンド相当のものを入れてくれればいいんだけど…まぁいいか…)