ローカルネットワーク上の特定のコンピューターがユーザーによってリモートでアクセスされているかどうかを知るためのツールを探しています。理想的には、そのユーザーが誰であるか知りたいです。私の会社では、仮想マシンを共有しているため、チームのメンバーにリモートコンピュータを使用するかどうかを尋ねる必要があります。どのコンピュータが使用されているか、どのコンピュータが空いているのかを知ることができる何らかのダッシュボードが欲しいのですが。
監視する必要のある各マシンなどにサービスをインストールする必要があるあらゆる種類の商用ソリューションを使用できてうれしいです。
以下は、クエリを実行しているシステムと同じドメインに参加しているWindowsクライアントからクエリを実行する場合に簡単になり、標準のドメインユーザー以上の特定の権限が必要になる場合があります。認証/権限の問題が発生した場合は、それを最初に確認します
少なくともWindowsから利用できるツールがありますXPと呼ばれる「qwinsta」。それ以降のバージョンのWindowsには、qwinstaと「クエリセッション」の両方があります。
qwinsta /server:computer01
SESSIONNAME USERNAME ID STATE TYPE DEVICE
console 0 Conn wdcon
rdp-tcp 65536 Listen rdpwd
administrator 2 Disc rdpwd
これは、ユーザー「管理者」がログインしているが切断されていることを示しています。この例では、computer01はデフォルトの「管理」RDPライセンスを持つWindows Server 2003システムであるため、誰かが接続するのを待機する2番目のセッションがあります。
以前に切断されたセッションに接続した後で同じコマンドを再度実行すると、次のようになります。
SESSIONNAME USERNAME ID STATE TYPE DEVICE
[unchanged output removed]
rdp-tcp#25 administrator 2 Active rdpwd
これは「RDPを介して現在アクティブな誰かです」と答えるには十分です。個々のユーザー名を使用している場合は、「誰」にも答えるべきです。 「testuser」や「administrator」などをすべて使用している場合は、「どのクライアントから」に対する回答を知りたいと思われるでしょうが、それについては上記では説明していません。
上記は、追加のツールを必要とせずに簡単な基本的な答えを提供します。詳細については、 cassiaライブラリ または PSTerminalServices (cassia上に構築)を参照してください。詳細については この質問 の回答の一部を参照してください。
これについて最初に考えたのは、 PsLoggedOn または LogonSessions などのSysinternalsツールを使用することでした。次に、以前は知らなかったqwinstaおよびrwinstaツールへの参照を 2003年のこのブログ投稿 で見つけました。
PSRdSessions という名前のPSModuleを使用できます。このモジュール いくつかの簡単な機能を提供します
使用例
Get-RdSession -ComputerName Server01.domain.xyz # return [Cassia.Impl.TerminalServicesSession]
返品用[ハッシュテーブル]
Get-RdSession -ComputerName Server01.domain.xyz | Convert-RdSession # return
返品の場合[pscustomobject]
Get-RdSession -ComputerName Server01.domain.xyz | Convert-RdSession | %{[pscustomobject]$_}