Server 08 RDP: é possível avisar se o mesmo usuário já estiver conectado?

7

Atualmente, desenvolvemos e monitoramos mais de 1 conta RDP (administrador) para uma máquina server 2008 r2, pois todos precisam compartilhar a mesma instância de tudo para garantir a consistência. O problema é que, enquanto uma pessoa está conectada e trabalhando fora, se outra pessoa tentar se conectar usando a mesma conta, ela desligará a primeira pessoa e gerará o controle para a segunda pessoa. O único aviso chega um pouco tarde, quando a primeira pessoa recebe uma mensagem dizendo "Outro usuário conectado ao computador remoto, então sua conexão foi perdida".

Existe alguma maneira conhecida de avisar o usuário de entrada que alguém já está conectado (semelhante ao tipo de mensagem que você pode receber ao trabalhar com contas diferentes) ou permitir que a vítima opte por não ser inicializada?

    
por Trent 26.04.2012 / 04:56

2 respostas

5

Algumas más notícias para você: Não há como o RDP avisar quando você está prestes a efetuar login em uma sessão existente. Ele só avisa quando você está logando via RDP e outro usuário já está logado. triste

Espere ... isso pode ser teoricamente possível usando scripts remotos. Você pode usar o comando query e a opção user para obter uma lista de usuários conectados. Você pode procurar o nome de usuário que lhe interessa e ver se a tag ACTIVE está na coluna STATE . A partir daí, você poderia invocar um arquivo .rdp se o usuário não estiver logado ou enviar uma caixa de diálogo de aviso se o usuário estiver conectado.

É caseiro, mas deve funcionar.

Exemplo de um dos meus servidores Windows:

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
    
por 26.04.2012 / 05:01
0

Este script vbs pode ser usado para evitar expulsar alguém já logado em um servidor Windows sob o mesmo nome de usuário:

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")

Realmente apenas verifica se existe algum usuário ativo, mas sabendo seu nome de usuário, você pode modificar a última linha para verificar especificamente.

    
por 18.09.2014 / 18:33