現在、一貫性を確保するために全員がすべての同じインスタンスを共有する必要があるため、サーバー2008 r2マシンに対して1つのRDPアカウント(管理者)を介して開発と監視を行っています。問題は、1人の人が接続して離れているときに、他の人が同じアカウントを使用して接続しようとすると、最初の人が起動し、2番目の人に制御が渡されることです。唯一の警告は少し遅すぎます。最初の人が「別のユーザーがリモートコンピューターに接続したため、接続が失われました」というメッセージを受信したときです。
誰かがすでに接続していることを着信ユーザーに警告する(別のアカウントで作業しているときに表示されるメッセージの種類と同様)、または被害者に起動しないオプションを許可する既知の方法はありますか?
いくつかの悪いニュース:既存のセッションにログインしようとしているときにRDPに警告を表示させる方法はありません。 RDP経由でログインしようとしていて、anotherユーザーがすでにログインしている場合にのみ警告が表示されます。悲しい顔
待ってください...理論的には、リモートスクリプトを使用して可能かもしれません。 query
コマンドとuser
オプションを使用して、ログオンしているユーザーのリストを取得できます。次に、興味のあるユーザー名を検索して、ACTIVE
タグがSTATE
列にあるかどうかを確認できます。そこから、ユーザーがログオンしていない場合は.rdpファイルを呼び出し、ユーザーがログオンしている場合は警告ダイアログを送信できます。
自家製ですが、うまくいくはずです。
私のWindowsサーバーの1つからの例:
C:\Users\BigKahuna>query user
USERNAME SESSIONNAME ID STATE IDLE TIME LOGON TIME
>BigKahuna rdp-tcp#0 1 Active . 3/26/2012 6:51
PM
このvbsスクリプトを使用すると、同じユーザー名でWindowsサーバーに既にログインしているユーザーが追い出されるのを防ぐことができます。
Set objShell = WScript.CreateObject("WScript.Shell")
Set p = objShell.Exec("qwinsta /server:serverName")
Do While p.Status = 0
WScript.Sleep 100
Loop
If InStr(p.StdOut.ReadAll, "Active") <= 0 then objShell.Run("mstsc C:\Users\username\Documents\Default.rdp")
実際には、アクティブなユーザーがいるかどうかをチェックするだけですが、ユーザー名がわかっている場合は、最後の行を変更して、特にそれをチェックすることができます。