Windows Server 2012 / 2012 R2 - RDS - Mettre votre serveur hôte de session en maintenance

Page 1 / 1

Lorsque vous déployez une infrastructure RDS, il faut aussi maintenir et protéger celle-ci en installant régulièrement les mises à jour de Windows et des programmes que vous y avez installés.
Néanmoins, étant donné que vos utilisateurs utilisent également ce serveur, vous devrez limiter l'accès au serveur pour pouvoir installer ces mises à jour.

  1. Avertir vos utilisateurs
    1. Via l'interface graphique
    2. Via la ligne de commandes (CLI)
  2. Mettre le serveur en maintenance
  3. Déconnectez vos utilisateurs
    1. Via l'interface graphique
    2. Via l'invite de commandes (CLI)

1. Avertir vos utilisateurs

Pour commencer, le plus important est de prévenir vos utilisateurs assez tôt pour qu'ils puissent enregistrer leur travail avant que vous ne travailliez sur le serveur.

1.1. Via l'interface graphique

Pour cela, vous pouvez le faire via l'interface graphique, via le gestionnaire de serveur -> Services Bureau à distance -> Collections.
Dans la liste "Connexions", vous verrez la liste des utilisateurs connectés sur votre serveur RDS.

Le seul inconvénient de le faire via l'interface graphique est que vous ne pourrez pas envoyer un message à tous vos utilisateurs en 1 clic.
En effet, vous devrez faire un clic droit "Envoyer un message" sur chaque utilisateur connecté.

Ce qui peut devenir impossible si vous avez des dizaines, voire des centaines d'utilisateurs connectés à votre serveur.

Via cette fonctionnalité, vous pourrez spécifier :

  • un titre : Maintenance programmée
  • un message : Attention : le serveur sera en maintenance à 17h15 ! Merci de sauvegarder votre travail, puis de fermer votre session.

Ensuite, cliquez sur Envoyer.

Une fois envoyé, voici ce que l'utilisateur verra sur son écran.

1.2. Via la ligne de commandes (CLI)

Si vous passez par la ligne de commandes, vous pourrez envoyer un message à tous les utilisateurs du serveur en 1 seule commande.

Plain Text

msg * "message à envoyer à tous les utilisateurs"

Note : l'astérisque (*) permet de cibler tous les utilisateurs.

Si vous souhaitez envoyer un message un peu plus professionnel, avec des retours à la ligne, utilisez la commande comme ceci :

Batch

msg *

Dans ce cas, la commande attendra que vous tapiez votre message.

Plain Text

Entrez message   envoyer; CTRL+Z sur nouv. ligne pour terminer message, puis ENTRÉE

Tapez votre message. Par exemple :

Plain Text

Attention : le serveur sera en maintenance à 17h35 ! Merci de sauvegarder votre travail, puis de fermer votre session.

Cordialement, votre administrateur système
^Z

Une fois que vous aurez validé votre message par la combinaison "CTRL+Z" sur une nouvelle ligne, puis ENTER, le message apparaitra sur l'écran de tous vos utilisateurs.

Mais, comme vous pouvez le voir, par défaut, la commande msg provoque une erreur d'encodage.
En effet, le message que vous écrivez dans la console (OEM 850) n'est pas encodé de la même manière que sous Windows (windows-1252).
Il y aura donc des problèmes d'affichage pour les caractères accentués.

Pour régler le problème, il suffit de changer temporairement l'encodage utilisé par l'invite de commande en tapant cette commande :

Batch

CHCP 1252

Maintenant, l'invite de commande utilisera le même encodage que Windows.
Tapez à nouveau la commande :

Batch

msg *

Tapez votre message comme précédemment (en ignorant le fait que les caractères accentués ne s'affichent pas correctement dans l'invite de commandes).

Une fois que vous aurez validé l'envoi du message, vous verrez qu'il apparaitra correctement.

2. Mettre le serveur en maintenance

En réalité, il n'existe pas vraiment de mode maintenance sur RDS.
Néanmoins, il est possible de :

  • bloquer les nouvelles connexions au serveur
  • déconnecter les utilisateurs du serveur
  • OU fermer leurs sessions grâce à une seule commande

Pour commencer, allez dans "gestionnaire de serveur -> Collections" et faites un clic droit "Ne pas autoriser les nouvelles connexions" sur votre serveur RDS.

Cliquez sur Oui.

3. Déconnectez vos utilisateurs

3.1. Via l'interface graphique

Pour déconnecter vos utilisateurs, vous avez 2 possibilités :

  • les déconnecter uniquement : pour que les programmes restent ouverts et ainsi, éviter de faire perdre le travail effectué par vos utilisateurs
  • fermer leur session : pour fermer aussi les programmes qui seraient restés ouverts et qui empêcheraient, le cas échéant, de les mettre à jour

Si vous passez par le gestionnaire de serveur, vous pourrez choisir :

  • Déconnexion : pour déconnecter l'utilisateur
  • Fermer la session : pour fermer sa session

Une fois que vous aurez déconnecté ou fermé la session de l'utilisateur, il recevra une erreur "Votre session des services Bureau à distance est terminée".

3.2. Via l'invite de commandes (CLI)

Pour le moment, 1 utilisateur et vous en tant qu'administrateur êtes connectés.

Pour déconnecter tous les utilisateurs, vous pouvez vous baser sur un script fourni par Microsoft.

Batch

query session >session.txt
for /f "skip=1 tokens=3," %%i in (session.txt) DO tsdiscon %%i
del session.txt

Côté utilisateur, vous verrez ce message d'erreur : Votre session des services Bureau à distance est terminée.

Notez que vous serez aussi déconnecté et que le script ne déconnecte que les utilisateurs qui se sont connectés avant vous.
Pour déconnecter le reste des utilisateurs, il faudra donc peut-être vous reconnecter et relancer une 2ème fois le script.

Comme vous pouvez le voir via le gestionnaire des tâches, les autres utilisateurs seront en statut "Déconnecté".

Notez tout de même qu'un utilisateur déconnecté peut tout de même se reconnecter, car il s'agit d'une reconnexion à une session existante et non une nouvelle connexion.

Si vous voulez éviter que vos utilisateurs ne se reconnectent pendant la maintenance, vous devrez fermer leurs sessions.

Pour cela, utilisez le script de Microsoft (dont le lien a été cité précédemment).

Batch

query session >session.txt
for /f "skip=1 tokens=3," %%i in (session.txt) DO logoff %%i
del session.txt

Une fois que le script aura terminé de fermer toutes les sessions, reconnectez-vous en tant qu'administrateur et vous constaterez qu'il n'y a plus que vous sur le serveur.

De plus, étant donné que les nouvelles connexions sont interdites, vos utilisateurs ne pourront plus se reconnecter à votre serveur RDS avant la fin de la maintenance.