Déconnecter une session RDP à distance en ligne de commande

System administrator workspace showing command prompt interfaces for remote Windows server management

Tout administrateur système s’est déjà retrouvé face à ce message frustrant lors d’une tentative d’ouverture de session Bureau à distance (RDP) : « Le serveur Terminal Server a dépassé le nombre maximal de connexions autorisées ». Deux sessions d’administration fantômes sont restées ouvertes ou déconnectées sans être fermées proprement, et vous vous retrouvez bloqué à la porte de votre propre machine.

Plutôt que de demander un redémarrage physique ou forcé du serveur, Windows fournit des outils natifs en ligne de commande pour interroger les sessions en cours et forcer la déconnexion des utilisateurs inactifs.

Étape 1 : Lister les sessions actives avec qwinsta

L’utilitaire qwinsta (pour Query Windows Station), également accessible via la commande query session, permet d’interroger un serveur local ou distant afin d’obtenir la liste complète des sessions ouvertes.

Depuis une invite de commandes ou une console PowerShell sur votre poste (en disposant des droits d’administration sur la machine cible), saisissez la commande suivante :

qwinsta /server:192.168.1.10

Le résultat affiche un tableau contenant plusieurs colonnes fondamentales :

  • SESSIONNAME : le type de session (par exemple rdp-tcp#0 ou la session console physique).
  • USERNAME : l’identifiant du compte utilisateur connecté.
  • ID : l’identifiant numérique unique attribué à cette session (c’est ce numéro qui nous intéresse).
  • STATE : l’état de la connexion (généralement Active ou Disc pour une session déconnectée).

Étape 2 : Fermer la session avec rwinsta ou logoff

Une fois l’identifiant repéré (par exemple l’ID 2 pour un utilisateur ayant fermé son client RDP sans se déconnecter du système), vous pouvez forcer la fermeture de session grâce à rwinsta (Reset Windows Station) :

rwinsta 2 /server:192.168.1.10

La commande équivalente avec l’outil standard logoff fonctionne sur le même principe :

logoff 2 /server:192.168.1.10 /v

Le commutateur /v active le mode verbeux pour confirmer que l’ordre de fermeture a bien été transmis et exécuté par le sous-système RDS. Quelques secondes suffisent pour que la session soit purgée, ce qui libère immédiatement un emplacement pour votre propre connexion d’administration.

Que faire si l’accès RPC distant est bloqué ?

Dans certains environnements réseau durcis, le pare-feu Windows ou des restrictions réseau empêchent l’exécution directe de qwinsta /server:IP via les protocoles RPC classiques. Dans ce cas de figure, l’outil PsExec de la suite Microsoft Sysinternals s’avère précieux pour exécuter vos commandes directement dans le contexte du serveur cible.

Pour approfondir cette méthode d’exécution déportée, vous pouvez consulter notre guide pour accéder à Windows en ligne de commande à distance. Une fois le prompt distant obtenu via PsExec, il suffit d’exécuter qwinsta et rwinsta [ID] localement sans renseigner le paramètre serveur.

Automatiser pour éviter le blocage

Si ce problème revient fréquemment sur vos serveurs membres ou sur des passerelles de services Bureau à distance, notamment si vous déployez des briques comme TS Web Access, la meilleure solution consiste à appliquer une stratégie de groupe (GPO). Vous pouvez configurer des délais d’expiration automatiques qui ferment définitivement les sessions restées à l’état Déconnecté après une ou deux heures d’inactivité.

Si vous préférez scripter des vérifications périodiques, pensez également à vérifier les règles d’exécution de scripts via la PowerShell Execution Policy pour automatiser la purge des sessions inactives sans intervention manuelle.

À lire aussi