2011/06/18

水無月1.リモートデスクトップ接続のセッション確認

今、VDIの記事でも描こうかなぁと、検証中。
でも、その前にTipsなぞ。

まずはリモートデスクトップサービス(RDS)のおさらい
リモートデスクトップ機能概要
http://www.microsoft.com/japan/windowsserver2008/r2/technologies/rds.mspx

RDSは最近は、マルチメディアやプリンタのリダイレクトやAeroグラスのサポートなどもしています。
RDSの中でもいちばんスタンダードなリモートデスクトップ接続についてですが
遠隔からサーバを管理したり、PCに接続し動作させることなどができます。

@IT  リモート・デスクトップでコンソール・セッションに接続する
http://www.atmarkit.co.jp/fwin2k/win2ktips/519rdcons/rdcons.html

上記の記事にはこうあります。
リモート・デスクトップで接続すると、それぞれの「セッション」ごとに固有のユーザー環境が用意される。セッションとは、ユーザーごとに用意される画面やキーボード、プロセス空間などの環境へ接続した状態のことを指す。リモートからログオンしたユーザーに対しても仮想的なコンピュータ環境が用意され、実際の物理コンソールの状態には関係なく、独立してコンピュータを利用できる。実際の物理的なコンソールから利用しているセッションのことを特に「コンソール・セッション」といい、リモートから接続しているセッションのことを「リモート・セッション」という。
セッションは、Windows XP Professionalでは同時に1セッションのみが利用でき、Windows Server 2003/Windows Server 2008の「管理用リモート デスクトップ」モードでは、同時に最大3セッション(1コンソール・セッション+2リモート・セッション)まで利用できる。
本来、サーバに接続する場合にはライセンス(RDSCAL)が必要なのですが、3セッションまでは管理用として接続が許可されているわけです。
WindowsServer2008以降ではデフォルト設定では、アカウント1つに付き同時に1つのセッションだけの利用しかできないため、複数の管理者が同一アカウントで接続しようとした場合、作業中にいきなり画面が落ちてしまう(セッションがとられてしまう)場合があったりします。
さて、そんなことにならないよう、現在のセッションの状態を調べたい場合に "query session"コマンドがあります。



上記の例だと、administratorがrdp-tcp#1セッションで接続していることがわかります。
別端末から接続確認する場合には /server オプションをつけると確認できます。
ただし、信頼関係をむすんでない別ドメインから接続したり、アクセス権限がないユーザーで実行すると、アクセス拒否されてしまいます。
そこで、psexec.exeを利用してみます。

psexec.exe
http://technet.microsoft.com/ja-jp/sysinternals/bb897553
psexec.exeは外部端末に指定した権限で接続し、コマンドを実行することができるツールです。
(これがなかなか便利)

というわけで、以下のバッチを作ったりしました。
@echo off
echo 確認したいサーバ名を入れてください。

set /p srv=サーバ名:
echo %srv%
psexec \\%srv% -u furyu\administrator query session

echo このまま接続しますか?
pause
start mstsc /v:%srv%


実行するとこのように出力されます。

これで、リモートデスクトップ接続する前にセッションを確認し、
よければそのままそのサーバへ接続する、という動きになります。

スポンサーリンク

スポンサーリンク