Windows Server 2012 / 2012 R2 - RDS - Débloquer la session de vos utilisateurs en tant qu'administrateur

Page 1 / 1

Lorsque vos utilisateurs utilisent des programmes RemoteApp ou des bureaux que vous leurs avez mis à dispositions via la solution RDS, il est possible qu'un ou l'autre programme plante sur le serveur.
Il se peut aussi que leur session pose problème et que vous soyez le seul à pouvoir résoudre ce problème. En effet, seul l'administrateur a accès au serveur physique pour y gérer les sessions et l'utilisation de ses ressources.

  1. Fermer les processus ou la session depuis l'interface graphique
  2. Fermer les processus ou la session depuis la ligne de commandes
    1. Fermer un processus sur une session spécifique
    2. Fermer une session spécifique

1. Fermer les processus ou la session depuis l'interface graphique

En utilisant l'interface graphique de votre serveur, vous pourrez venir en aide à vos utilisateurs grâce au gestionnaire des tâches.

En tant qu'administrateur, en cliquant sur l'option "Plus de détails" du gestionnaire des tâches, vous pourrez gérer les sessions ouvertes sur votre serveur hôte de session, ainsi que les processus ouverts dans chaque session.
Par exemple, en tant qu'administrateur, vous pourriez fermer un programme RemoteApp (dans notre cas : Microsoft Excel) à distance.

Ou fermer complètement la session de l'utilisateur distant en faisant un clic droit "Se déconnecter" sur celui-ci.
Ensuite, votre utilisateur pourra de nouveau accéder aux bureaux et/ou aux programmes RemoteApp auxquels il avait accès.

Depuis le gestionnaire de serveur, vous pourrez aussi déconnecter un utilisateur ou fermer sa session.
Pour cela, rendez-vous dans la section "Services Bureau à distance -> Collections -> Nom de la collection concernée (facultatif).
Ensuite, dans la liste des connexions, repérez le nom de votre utilisateur et faites un clic droit "Fermer la session" sur celui-ci.

Une fois la session fermée depuis le serveur, votre utilisateur recevra le message d'erreur suivant :

Plain Text

Votre session des services Bureau à distance est terminée.
...
Il est possible que votre administrateur réseau ou un autre utilisateur ait fermé votre session.
...

2. Fermer les processus ou la session depuis la ligne de commandes

Pour les fans de la ligne de commandes ou ceux qui auraient installé un serveur en mode Core, voici comment fermer les processus et les sessions de vos utilisateurs.

2.1. Fermer un processus sur une session spécifique

Pour commencer, vous devez récupérer l'ID de session qui correspond à la session de l'utilisateur souhaité (dans notre cas : InformatiUser).

Batch

query session

Cette commande affichera la liste des sessions Terminal Server ouvertes sur le serveur actuel.

Plain Text

 SESSION           UTILISATEUR              ID  ÉTAT    TYPE        PÉRIPHÉRIQUE

 services                                    0  Déco
>console           Administrateur            1  Actif
 rdp-tcp#0         InformatiUser             2  Actif
 rdp-tcp                                 65536  Écouter

Pour fermer des programmes RemoteApp ou d'autres processus sur une de ces sessions, vous devrez obligatoirement spécifier sur quelle session vous souhaitez fermer le processus en question.
En effet, si vous ne spécifiez pas cette information en paramètre, le processus en question sera fermé sur votre session et non celle de l'utilisateur.

Pour liste les processus lancés sur une session en particulier, vous devrez utiliser la commande "query process" en spécifiant l'ID de la session souhaitée.

Batch

query process /ID:2

Ce qui donne :

Plain Text

 UTILISATEUR           NOM SESSION         ID    PID  IMAGE
 système               rdp-tcp#0            2   3500  csrss.exe
 système               rdp-tcp#0            2   2564  winlogon.exe
 dwm-2                 rdp-tcp#0            2    328  dwm.exe
 informatiuser         rdp-tcp#0            2   1220  taskhostex.exe
 informatiuser         rdp-tcp#0            2   2936  rdpclip.exe
 informatiuser         rdp-tcp#0            2   2732  rdpinit.exe
 informatiuser         rdp-tcp#0            2   2292  rdpshell.exe
 informatiuser         rdp-tcp#0            2   1192  excel.exe

Ou en spécifiant le nom de l'utilisateur.

Batch

query process InformatiUser

Dans ce cas, vous verrez uniquement ceux lancés en tant que [nom de l'utilisateur]. Les processus système ne seront donc pas affichés.

Plain Text

 UTILISATEUR           NOM SESSION         ID    PID  IMAGE
 informatiuser         rdp-tcp#0            2   1220  taskhostex.exe
 informatiuser         rdp-tcp#0            2   2936  rdpclip.exe
 informatiuser         rdp-tcp#0            2   2732  rdpinit.exe
 informatiuser         rdp-tcp#0            2   2292  rdpshell.exe
 informatiuser         rdp-tcp#0            2   1192  excel.exe

Pour fermer un processus sur la bonne session utilisateur, le plus rapide consiste à cibler le processus grâce à son ID (qui est unique par processus par session).
Important : le PID change à chaque fois que le processus est fermé, puis relancé.

Dans notre cas, nous fermerons "Microsoft Excel" qui correspond au processus "excel.exe" dont l'ID est : 1192

Batch

taskkill /PID 1192 /F

Affichez à nouveau la liste des processus lancés sur cette session.

Batch

query process InformatiUser

Comme vous pouvez le voir, le processus "excel.exe" a disparu de la liste.

Plain Text

 UTILISATEUR           NOM SESSION         ID    PID  IMAGE
 informatiuser                              2   1220  taskhostex.exe
 informatiuser                              2   2936  rdpclip.exe
 informatiuser                              2   2732  rdpinit.exe
 informatiuser                              2   2292  rdpshell.exe

Nous avons ensuite relancé notre programme RemoteApp Microsoft Excel depuis le poste client pour vous montrer une autre technique.
Pour ceux qui voudraient fermer un processus grâce au nom du fichier exécutable sur une session spécifique, voici 2 possibilités.

1ère possibilité :

  • utiliser le filtre "SESSION" pour cibler une session spécifique. Dans notre cas, il s'agit de la session ayant pour ID : 2.
  • utiliser le paramètre "im" (qui signifie : image) pour cibler un processus grâce à son nom. Dans notre cas : excel.exe.

Batch

taskkill /FI "SESSION eq 2" /im:excel.exe /F

Plain Text

Opération réussie : le processus "EXCEL.EXE" de PID 2220 a été arrêté.

2ème possibilité :

  • utiliser le filtre "USERNAME" pour cibler une session spécifique. Dans notre cas, il s'agit de la session ouverte par l'utilisateur : InformatiUser.
  • utiliser le paramètre "im" (qui signifie : image) pour cibler un processus grâce à son nom. Dans notre cas : excel.exe.

Batch

taskkill /FI "USERNAME eq InformatiUser" /im:excel.exe /F

Plain Text

Opération réussie : le processus "EXCEL.EXE" de PID 1552 a été arrêté.

2.2. Fermer une session spécifique

Pour commencer, listez les sessions actives sur votre serveur hôte de session.

Batch

query session

Cette commande vous permettra de connaitre les sessions ouvertes sur votre serveur, ainsi que l'ID de chaque session.

Plain Text

 SESSION           UTILISATEUR              ID  ÉTAT    TYPE        PÉRIPHÉRIQUE
 
 services                                    0  Déco
>console           Administrateur            1  Actif
 rdp-tcp#0         InformatiUser             2  Actif
 rdp-tcp                                 65536  Écouter

Pour fermer une session grâce à son ID, utilisez cette commande :

Batch

logoff 2

Si vous souhaitez utiliser le nom de la session (ce qui n'a rien avoir avec le nom de votre utilisateur), utilisez la commande comme ceci.
Le nom de la session étant ce qui est indiqué dans la colonne "SESSION" du résultat retourné par la commande "query session" citée précédemment.

Batch

logoff rdp-tcp#0

Une fois la session fermée, votre utilisateur recevra un message d'erreur :

Plain Text

Votre session Bureau à distance est terminée.
Votre session sur l'ordinateur distant a été interrompue.