web-dev-qa-db-fra.com

Afficher la connexion active du bureau à distance sur un ordinateur donné

Je recherche un outil pour savoir si un ordinateur donné sur le réseau local est accessible à distance par un utilisateur ou non et, idéalement, j'aimerais savoir qui est cet utilisateur. Dans mon entreprise, nous partageons des machines virtuelles et nous devons toujours demander aux membres de l'équipe s'ils utilisent un ordinateur distant. J'aimerais avoir une sorte de tableau de bord qui peut me dire quel ordinateur est utilisé et quel ordinateur est gratuit.

Je suis heureux d'utiliser n'importe quel type de solution commerciale qui nécessiterait l'installation de services sur chacune des machines à surveiller ou des choses de ce genre.

15
d--b

Ce qui suit est simplifié si vous interrogez à partir d'un client Windows joint au même domaine que le système que vous interrogez, et peut nécessiter certains droits au-delà d'un utilisateur de domaine standard. Si vous rencontrez des problèmes d'authentification/autorisation, ce serait la première chose que je vérifierais.

Il existe un outil disponible au moins aussi loin que Windows XP appelé "qwinsta". Les versions ultérieures de Windows ont à la fois qwinsta et "session de requête".

qwinsta /server:computer01
 SESSIONNAME       USERNAME                 ID  STATE   TYPE        DEVICE
 console                                     0  Conn    wdcon
 rdp-tcp                                 65536  Listen  rdpwd
                   administrator             2  Disc    rdpwd

Cela montre l'utilisateur "administrateur" connecté mais déconnecté. Étant donné que dans cet exemple, computer01 est un système Windows Server 2003 avec la licence RDP "d'administration" par défaut, il y a une deuxième session à l'écoute de quelqu'un pour se connecter.

L'exécution à nouveau de la même commande après la connexion à cette session précédemment déconnectée ressemble à ceci:

 SESSIONNAME       USERNAME                 ID  STATE   TYPE        DEVICE
[unchanged output removed]
 rdp-tcp#25        administrator             2  Active  rdpwd

Cela suffit pour répondre "est quelqu'un actuellement actif via RDP", et si vous utilisez des noms d'utilisateur individuels, il devrait également répondre au "qui". Si vous utilisez tous "testuser" ou "administrateur" ou quelque chose, vous voudrez probablement connaître la réponse à "de quel client", et cela n'est pas donné ci-dessus.

Ce qui précède donne une réponse de base rapide sans avoir besoin d'outils supplémentaires. Pour des informations plus détaillées, vous pouvez consulter la bibliothèque cassia ou PSTerminalServices (construit sur cassia). Voir certaines des réponses dans cette question pour plus de détails.

Ma première pensée à ce sujet a été d'utiliser des outils Sysinternals tels que PsLoggedOn ou LogonSessions . J'ai ensuite trouvé une référence aux outils qwinsta et rwinsta jusque-là inconnus de moi dans ce billet de blog de 20 .

25
jeff

Vous pouvez utiliser un PSModule nommé PSRdSessions , ce module fournir quelques fonctions simples

échantillon d'utilisation

Get-RdSession -ComputerName Server01.domain.xyz # return [Cassia.Impl.TerminalServicesSession]

pour le retour [table de hachage]

Get-RdSession -ComputerName Server01.domain.xyz | Convert-RdSession # return

pour le retour [pscustomobject]

Get-RdSession -ComputerName Server01.domain.xyz | Convert-RdSession | %{[pscustomobject]$_}

enter image description here

0
Alban