treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

※https化しました。その影響でしばらくリンク切れなどがあるかもしれませんが徐々に修正していきます。 リンク切れなどのお気づきの点がございましたらコメントなどでご指摘いただけますと助かります。

RDP接続先でアクティブセッションを見る方法三種

リモートデスクトップでサーバを管理するのが主流になってから結構な年月が経ちます。
マルチユーザ環境となるWindows Serverで使っていると、気になるのは他のユーザのセッション、これを確認する方法を普段使っている方法からご報告します。

どんなとき?

Windows Updateが終わった…、さて再起動を、と思ったら、
「使用中のユーザがいるから、いま再起動したらそのユーザの保存していないデータは消えちゃうかもしれないけどいい?」
なんて、OSが確認を求めてきます。

マルチユーザ環境でのリモートデスクトップが当たり前の現代では、再起動時に他のリモートデスクトップセッションにも気を配らないといけないことも。

こんなとき、誰がログインしているかを確認できれば、誰に連絡すればいいかが少なくとも分る、ということで、リモートデスクトップ接続でログイン中のユーザを見つけるための方法を覚えておく、という内容です。

単純にユーザ名と状態だけを確認する=コマンド

簡単に確認するには、コマンドプロンプトで「query user」とコマンドの実行をすればパッと確認できます。
例えば、Administratorアカウントでログインしているときに、他のユーザがログインしているときには、以下のような表示になります。

f:id:treedown:20201128013807p:plain
いまログインしているadministrator以外にtestuserというユーザがログイン中であることが分ります。状態が「Active」と表示されているので、接続中でなおかつ使用中であることが分ります。ちなみに使ってない(けどログインだけはしている状態=RDP接続を切断しているだけの状態の)ときは「Disc」(DisConnectedの略)と表示されます。

「query user」を覚えておくだけなので簡単、見るだけならこれが一番便利です。

追記:
別のPCのコマンドプロンプトから対象のPCのRDPセッションを確認するには、
「query user /server:%COMPUTERNAME%」と"/server"オプションに確認したいコンピュータ名を指定して実行することで可能です。RDP接続前に別のユーザがRDP接続をしていないか確認するときに使えます。(コマンドプロンプトを起動するユーザが対象PCにRDP接続可能なユーザ権限があることが条件) ※追記ここまで

タスクマネージャを使う

タスクマネージャからも確認が可能な最近のWindows。さらにコマンドより高機能に制御できて便利です。

画面はタスクマネージャからユーザタブで閲覧できます。

f:id:treedown:20201128014104p:plain
ここに表示されるユーザが現在リモートデスクトップ接続のセッションが存在しているユーザの一覧。
ユーザを右クリックすると、実行したいアクションを選択できます。ログイン中のユーザにメッセージも送れるので便利。
ちょっとやってみます。「メッセージの送信」を選択すると、

f:id:treedown:20201128014344p:plain
ログイン中のユーザと日時がメッセージの件名にプリセットされていて、メッセージ内容が空欄でウィンドウが起動してきます。ここに伝えたいメッセージを入力して、OKボタンをクリック。

すると、メッセージの送信先であるtestuserの画面には…

f:id:treedown:20201128014359p:plain
このように、Administratorアカウントから送信されたメッセージボックスが表示されます。
意外と便利かも。

相手が応答ない場合には、強制的にログアウトさせてしまうことも可能です。
先ほどの画面で「サインオフ」を選択すると…

f:id:treedown:20201128014422p:plain
メッセージ「ユーザのサインアウトを行うと、そのユーザの未保存のデータが失われることがあります。続行しますか?」と表示され、サインアウトさせるかキャンセルするかを選択する画面が表示されます。

f:id:treedown:20201128014501p:plain
ここで「ユーザのサインアウト」を選択すると、testuserの画面では、

f:id:treedown:20201128014445p:plain
なにもしてない状態でもサインアウトが実行されてリモートデスクトップ接続を終了することになります。これも便利。
完了すると、

f:id:treedown:20201128014539p:plain
このように、サインアウトしたユーザはタスクマネージャの画面表示から消えます。

タスクマネージャ、結構高機能ですね。

おまけ:RDCManを使って閲覧

RDCMan(Remote Desktop Connection Manager)を使っている環境では、セッション一覧を閲覧する機能を備えています。(RDCManはWindowsの標準機能ではありませんが、Microsoftダウンロードセンターから無償ダウンロードが可能なツール)ただ、RDCManを使い続けること自体がやや微妙な状況(メンテナンスがされておらず、バージョンアップもされていない)になっているので、今後はあまり使えないかも。

※追記:(2021年6月23日)
2021年6月22日付けで新しいバージョンとなる「Remote Desktop Connection Manager v2.8」がリリース、今後はSysinternalsとして継続していくことになったようです。一安心。

RDCManのコンピュータ一覧からセッションを閲覧したいコンピュータを右クリック、「List session」を選択すると、そのコンピュータのリモートデスクトップ接続セッションが確認できます。

f:id:treedown:20201128014726p:plain
例えば上図のようにクリックして、
開いたウィンドウで、

f:id:treedown:20201128014747p:plain
こんな風に確認できます。タスクマネージャのようになにか次のアクションを起こせるわけではありません。
RDCManでリモートデスクトップ接続先を一括管理しているようであれば、右クリックから簡単に確認できるから便利かも。

こうして見てみると、タスクマネージャって結構高機能ですね。