Articles Tagués ‘TSE’

Les questions suivantes m’ont souvent été posées par mes différents clients et partenaires :

Puis-je réutiliser mes anciennes CAL TSE/RDS et les réinstaller sur un nouveau serveur exécutant une version d’OS Windows Server différente à celle du serveur « Source/existant »?

Puis-je utiliser mes CAL TSE/RDS existantes pour autoriser mes utilisateurs RDS à se connecter à des serveurs TSE/Hôtes de Session (RDSH) exécutant des versions Windows Server différentes ?

J’ai donc décidé de rédiger ce post pour y répondre car cela pourrait intéresser plusieurs personnes se posant les mêmes questions :).

Ma réponse sera « Splitée » en deux parties :

  • Compatibilité des CAL TSE/RDS pour les serveurs de Licence RDS (RDLS)
  • Comptabilité des CAL TSE/RDS pour les serveurs Hôte de Session (RDSH

 

Note importante : les informations détaillées ci-dessous s’applique à vos serveurs de Licence RDS et RDSH hébergées dans vos Datacenters mais aussi ceux qui tournent sous forme de VM IaaS Azure (ou AWS, GCP, AliBabaCloud…Etc)

 

#R1 : Liste des CAL TSE/RDS pouvant être installées sur chaque version d’OS Windows Server 

Le tableau ci-dessous vous montre les CAL TSE et RDS pouvant être installées/utilisées sur chaque version d’OS Windows Server hébergeant le service de Licensing RDS (RDLS : Remote Desktop Licensing Server) :

Pour vous aider à mieux comprendre le tableau, je vous détaillerai un vrai « Use Case »:

Supposons qu’un Client (Société) X dispose déjà d’un Pack de Licences RDS 2008 R2 et est sur le point de dé-commissionner son infrastructure RDS 2008 R2 pour en déployer une nouvelle sous 2012 R2 ou 2016. Comme indiqué dans le tableau ci-dessus, les CAL RDS « 2008 et 2008 (R2) » peuvent être installées sur les OS Windows Server suivants : 2008, 2008 R2, 2012, 2012 R2 et 2016. Cette société pourra donc continuer à utiliser (en réinstallant) les Licences RDS 2008 R sur tout futur serveur de Licence RDS exécutant Windows Server 2008 à 2016.

#R2 : Liste des CAL TSE/RDS pouvant être utilisées pour autoriser vos utilisateurs RDS à se connecter sur un serveur RD Session Host

Le tableau ci-dessous vous montre les CAL TSE et RDS pouvant être installées/utilisées pour autoriser vos utilisateurs distants à se connecter aux serveurs TSE/RDSH en fonction de la version d’OS Windows Server qui exécutent :

Scott Manchester, RDS PPM (Principal Program Manager) vous explique les Upcoming Updates pour RDS (Securité, Cloud, MFA, Scalability …Etc)

Watch & Enjoy 🙂

S’applique à : RDS 2012 et 2012 R2

Une question intéressante m’a été posée lors d’un audit d’une infrastructure RDS 2012 R2 (RemoteApp & VDI) :

Pouvez-vous paramétrer le dimensionnement intelligent « Smart Sizing » des fenêtres RDP lors de l’accès aux Bureaux Windows publiés ou P2T virtuels (VDI) lancés depuis le Portail RD Web 2012 R2 ?

La réponse est oui, et ce via la modification d’un certain nombre de fichiers de configuration liés au site RDWeb hébergé sur IIS.

Je vous présenterai donc à travers cet article les instructions à suivre pour activer le Smart Sizing sur vos batteries de serveurs RD Web Access.

Comme illustré dans l’image ci-après, le « Smart Sizing » n’est pas disponible (n’est pas activé) par défaut.

Dans l’exemple suivant, le Bureau Windows nommé « LABRDS01 » a été lancé depuis le Portail RD Web et comme vous pouvez le constater, la console Connexion Bureau à distance (RDC : Remote Desktop Connection) lancée n’est pas ajustée (hauteur & largeur) automatiquement, vous devez en effet utiliser les barres de défilement (horizontale et verticale) pour atteindre les différents coins du Bureau Windows lancé :

2

Mon client a souhaité que les fenêtres RDC utilisent le Smart Sizing pour un auto-ajustement lors du lancement, je peux comprendre son besoin et à quel point cela peut être embêtent pour certains types de end user exigeant une meilleure expérience utilisateur.

Comment ça marche ?

Ouvrez une Session Windows (compte Admin du domaine ou équivalent) sur le Serveur RD Web Access

Commencez par sauvegarder le dossier « C:\Windows\Web\RDWeb » avant de suivre les instructions ci-dessous, faites simplement une copie du dossier sur une partition autre que C:\

Editez le fichier « C:\Windows\Web\RDWeb\Pages\Site.xsl »

Localisez la ligne N° 665 (Notepad++ est votre ami :))

3

Insérer le code suivant au niveau de cette ligne :

strRdpFileContents += « smart sizing:i:1\r\n »;

Le résultat final doit ressembler au bloc de code suivant :

4

Sauvegardez et fermez le fichier Site.xsl

Enfin, relancez IE, reconnectez-vous sur le Portail RD Web Access et notez le résultat

Comme illustré dans l’image ci-après, le Bureau Windows lancé est désormais affiché en mode « Smart Sizing » :

5

N’hésitez pas à redimensionner la fenêtre RDC pour constater l’ajustement automatique de celle-ci en fonction de la taille du Bureau Windows.

J’espère que cette astuce pourra vous être utile dans vos projet de déploiement & d’optimisation RDS 2012 et 2012 R2.

La solution RDS (Remote Desktop Services) 2012 et 2012 R2 inclut un composant (service de rôle) permettant d’accéder aux ressources publiées (Programmes RemoteApp, Bureaux Windows ou encore Postes de travail Virtuel) via un portail Web, et ce depuis un simple navigateur Web.

Il s’agit du service de rôle <Serveur Accès Bureau à distance par le Web>, appelé aussi RDWA pour Remote Desktop Web Access.

L’URL sur laquelle l’utilisateur final se connecte est généralement : https://FQDNduserveurRDWA/RDWeb

Exemple d’un serveur RDWA nommé SRVRDWA01.masociete.lan : https://SRVRDWA01.masociete.lan/RDWeb

Une fois déployé, le portail RDWA ressemble à l’image ci-après :

1

Dans le cadre de plusieurs projets de déploiement RDS 2012 R2, certains clients « un peu exigeants » me demandent un minimum de « customization » de ce portail pour intégrer par exemple :

Le logo de l’entreprise

Changer le « Work Resources » par un titre plus significatif

Rajouter une description du Portail au lieu de « Connexions aux programmes …. »

Eh bien, cela est possible et nous allons voir à travers cet article, comment apporter cette personnalisation au portail RDWA.

Comment ça marche ?

1. Changer le « Work Resources »

Vous pouvez utiliser la cmd-let « Get-RDWorkSpace » pour obtenir le nom d’espace de travail actuel :

2

Pour le changer , lancez Windows PowerShell en tant qu’Administrateur depuis le serveur RDWA et saisissez :

Set-RDWorkSpace -Name NouveauNomdEspaceDeTravail

e.i : Set-RDWorkSpace -Name « Espace de travail HichamSoft »

Connectez-vous à l’URL de votre RDWA et constatez l’apparition du nouveau nom d’espace de travail :

3

2. Changer la « Description du portail »

Ouvrez l’explorateur Windows et naviguez  à l’emplacement suivant :

C:\Windows\Web\RDWeb\Pages\fr-FR\

Localisez le fichier « RDWAStrings« , faites un clic-droit dessus et sélectionnez ensuite « Modifier » :

4

Une fois ouvert, changer la description « Connexions aux programmes RemoteApp …. » par le texte qui vous convient.

5

Dans l’exemple suivant, la description suivante sera utilisée :

Portail d’accès aux Programmes RemoteApps et Bureaux Windows destinés au personnel HichamSoft

6

3. Changer les « Images du Portail »

Il faut savoir que toutes les images du portail, que ça soit l’image à côté du nom d’espace de travail, le petit logo à côté de ‘Accès Bureau à distance par le Web … se trouvent dans le dossier suivant :

C:\Windows\Web\RDWeb\Pages\images

7

Dans l’exemple suivant, nous allons remplacer le Logo situé à côté du nom d’espace de travail et l’image d’arrière plan.

Pour ce faire, il suffit de renommer les images d’origines en rajoutant par exemple une extension « _old », et placer ensuite les nouvelles images dans le même dossier.

Notez que les nouvelles images doivent avoir le même format (PNG ou JPG) et la même taille (Taille en pixel).

Vous pouvez utiliser un outil de retouche d’images pour modifier la taille de vos images et les adapter aux images à remplacer.

Perso, j’utilise un Freeware, simple à installer et à utiliser, il s’agit de PhotoFiltre, téléchargeable gratuitement ici.

Après avoir modifié et placé les nouvelles images dans le dossier C:\Windows\Web\RDWeb\Pages\images, mon portail RDWA ressemble à l’image ci-après :

8

Vous pouvez encore aller plus loin et changer le petit logo « Microsoft » situé dans le coin inférieur droit ou encore la bannière, ces changements sont basé sur le même concept : préparez, renommez et placez vos images dans le dossier « images »

Le résultat final de mon Portail RDWA customisé avec tout ce qui a été cité ci-haut est le suivant :

9

 

Ce guide d’applique à : RDS Windows Server 2012 et 2012 R2

Depuis Windows Server 2012, RDS (Remote Desktop Services) peut être déployé sous deux modes :

Déploiement Standard

Démarrage Rapide

Dans un déploiement important (plusieurs serveurs RDS), c’est le premier mode de déploiement (Standard) qui est adopté.

La répartition des demandes de Connexions Bureau à distance sur l’ensemble des serveurs Hôte de Session Bureau à distance (RDSH : Remote Desktop Session Host) du déploiement se fait via le service Broker, composant primordial d’une infrastructure RDS et considéré comme « Backbone » depuis RDS 2012.

Cetains DSI et chef de projet devant piloter des projets autour de la solution RDS se pose la question sur le mode de répartition de charge sur les serveurs Hôte de Session et sur les différentes méthodes de configuration de celui-ci.

Il faut savoir que depuis RDS 2012, la répartition de charge (nombre de connexion BàD par serveur) peut se faire directement depuis le serveur Hôte de Session et non pas au niveau du Serveur Broker.

(suite…)
Information

Le scénario de déploiement traité dans ce guide pas à pas est représentatif à un projet déjà réalisé par mes soins chez un client grand compte (+ de 1000 connexions).

C’est un scénario que j’ai étudié pendant plusieurs semaines et que je voulais partager avec vous parce qu’actuellement (et malheureusement) on en trouve pas beaucoup de documentations techniques sur Internet (e-Books /Blogs /Librairies IT …) sur la Haute Disponibilité des Services de rôles de la solution RDS sous Windows Server 2012 R2.

Vos remarques, suggestions et commentaires sont bien évidemment les bienvenus :).

Bonne Lecture o__O.

HK.

Application

Ce guide s’applique à : Windows Server 2012 R2 – Windows Server 2012

Introduction

Les Services Bureau à distance ou RDS pour Remote Desktop Services, anciennement appelé TSE pour Terminal Services (jusqu’à Windows Server 2003 R2) est une solution qui vous permet d’établir des connexions Bureau à distance simultanées (Accès Bureau Windows) sur un ou plusieurs hôtes, d’accéder à des Applications publiées (RemoteApps, appelées aussi Seamless Applications) ou encore de se connecter à des postes de travail virtuels (VDI), et ce depuis n’importe où et via n’importe quel périphérique.

(suite…)

 

S’applique à : Windows XP, Windows 2003 Server, Windows Vista, Windows 7, Windows 2008 Server, Windows 2008 Server R2, Windows 8, Windows 8.1, Windows 2012 Server, Windows 2012 Server R2, Windows 10, Windows 2015 Server

A noter que certains paramètres et instructions ne sont disponibles que sur les dernières versions de Windows Server et Windows Client, e.i Windows 8.1 /10 – Windows 2012 Server R2: lancer tsdiscon.exe /? dans un premier temps pour vérifier la liste des paramètres disponibles

Introduction

TSDiscon.exe est un outil en ligne de commande natif dans les systèmes d’exploitation Windows Server et Windows Client.

Il permet de déconnecter une session Windows « locale » ou une session « Bureau à distance » hébergée sur un Serveur Hôte de session Bureau à distance ou Terminal Server.
La déconnexion de la session n’implique pas la fermeture des programmes et processus en cours lancés par l’utilisateur, le travail non enregistré /non sauvegardé de l’utilisateur distant dont la session est déconnectée n’est pas perdu.
Important : Ne pas confondre avec l’outil Logoff.exe, qui permet de fermer une session Windows « locale ou distante » : fermeture de la session utilisateur et de tous les programmes /processus lancés par celui-ci.
Syntaxe

TSDISCON [ID_session | session] [/SERVER:serveur] [/V] [/VM]

-? | Help | Pour obtenir de l’aide. N’hésitez pas à utiliser tsdiscon /? ou tsdiscon -? pour connaître la liste complète des paramètres disponibles pour la version de Windows (Client ou Serveur) installée sur vos machines

ID_session | ID de la session (numéro de session) à déconnecter
session | Nom de la Session à déconnecter
/Server | suivi de : et le nom du serveur distant (Hote de session ou TSE) sur lequel la session à déconnecter est hébergée
/V | Permet d’afficher les informations sur les actions effectuées

NOTE

-> Si le paramètre /Server n’est pas spécifié, le serveur ou poste de travail sur lequel vous êtes connecté est spécifié par défaut !

> Attention à ne pas saisir TSDiscon.exe ou TSDiscon uniquement depuis le même serveur /poste de travail, cela déconnectera votre session actuelle et vous allez vous retrouver avec un écran noir 🙂 !

-> Toutes les commandes ci-dessous sont exécutées depuis l’invite de commande (cmd.exe) lancée en tant qu’Administrateur.

Exemples

* Pour déconnecter la session d’un utilisateur connecté sur le même serveur sur lequel vous êtes connecté

=> Depuis l’invite de commande, vous saisissez dans un premier temps : Query session

1

Comme illustré dans l’image ci-dessus, l’utilisateur hkadiri a une session RDP Actif, nommée RDP-TCP#1 et portant l’ID 3

Supposons que la session Bureau à distance de l’utilisateur hkadiri (avant déconnexion) ressemble à ça :

2

=> Maintenant que nous avons noté les informations sur la session Bureau à distance ouverte par l’utilisateur hkadiri, nous pourrons déconnecter sa session du serveur, soit en utilisant

1. Le nom de sa session actif         : TSDiscon rdp-tcp#1 
2. L’ID de sa session actif              : TSDiscon 3

Notez que dans les 2 cas, la session de l’utilisateur hkadiri est déconnectée. S’il s’agit d’une session Bureau à distance, l’utilisateur hkadiri voit apparaître le message suivant sur son écran :

3

Enfin, si l’utilisateur se reconnecte à sa session locale ou Bureau à distance, il retrouvera ses programmes et fenêtres Windows ayant été ouverts avant la déconnexion.

* Pour déconnecter la session d’un utilisateur connecté sur un serveur distant (TSE et/ou RDSH)

=> Depuis l’invite de commande, vous saisissez dans un premier temps : Query session /Server:NomDuServeurDistant

Dans l’exemple suivant, nous allons lister les sessions Bureau à distance actives sur le serveur distant LABRDSH02

4

=> Pour déconnecter la session de l’utilisateur hkadiri connecté sur le serveur distant LABRDSH02, l’une des commandes suivantes est utilisée :

1. En utilisant le nom de sa session : TSDiscon rdp-tcp#0 /Server:LABRDSH02
2. En utilisant l’ID de sa session       : TSDiscon 3 /Server:LABRDSH02

Enfin, vous pouvez utiliser le paramètre /V pour afficher les actions effectuées, plus précisément l’action de déconnexion de la session spécifiée.

Pour reprendre l’exemple précédent, nous allons déconnecter la session de l’utilisateur distant hkadiri en utilisant l’ID de session et le paramètre /V

TSDiscon 3 /Server:LABRDSH02 /V

Comme montré dans l’image ci-après, l’action (de déconnexion de session) est affichée

5

Pour terminer, le paramètre /VM peut être utilisé pour déconnecter une session ouverte sur un serveur virtuel distant ou poste de travail virtuel exécuté /hébergé sur un Hyperviseur (Hyper-V, ESXi …). Notez qu’uniquement l’ID de la session peut être utilisé mais pas le nom de la session.

 

S’applique à : Windows Vista, Windows 7, Windows 2008 Server, Windows 2008 Server R2, Windows 8, Windows 8.1, Windows 2012 Server, Windows 2012 Server R2, Windows 10, Windows 2015 Server

A noter que certains paramètres et instructions ne sont disponibles que sur les dernières versions de Windows Server et Windows Client, e.i Windows 8.1 /10 – Windows 2012 Server R2: lancer Reset.exe Session /? dans un premier temps pour vérifier la liste des paramètres disponibles

Introduction

Reset.exe est un outil en ligne de commande permettant de réinitialiser une session Bureau à distance hébergée sur un serveur Terminal Server et/ou Hôte de session Bureau à distance.

La réinitialisation de session signifie la suppression de celle ci du serveur distant, donc notez qu’il faut avertir les utilisateurs distants connectés avant de procéder à la réinitialisation de leurs sessions, faute de quoi le travail (non enregistré) sera perdu !

L’outil Reset.exe peut être utilisé dans un seul contexte qu’est : SESSION.

Depuis l’invite de commande (cmd.exe), si vous saisissez reset ou reset.exe, le résultat suivant est retourné:

RESET_1

Comme pouvez le constater, l’outil reset.exe doit toujours être suivi de SESSION, voir la section « Syntaxe » pour la liste des paramètres disponibles avec le mode RESET.EXE SESSION.

Syntaxe

RESET SESSION {NomSession | IDsession} [/SERVER:NomServeur] [/V]

-? | Help | Pour obtenir de l’aide. N’hésitez pas à utiliser reset session /? ou reset session -? pour connaître la liste complète des paramètres disponibles pour la version de Windows (Client ou Serveur) installée sur vos machines

NomSession | Nom de la Session à réinitialiser
IDsession | ID de la session (numéro de session) à réinitialiser
/Server | suivi de : et le nom du serveur distant (Hote de session ou TSE) sur lequel la session à réinitialiser est hébergée
/V | Permet d’afficher les informations sur les actions effectuées

NOTE

-> Si le paramètre /Server n’est pas spécifié, le serveur ou poste de travail sur lequel vous êtes connecté est spécifié par défaut ! 

-> Toutes les commandes ci-dessous sont exécutées depuis l’invite de commande (cmd.exe) lancée en tant qu’Administrateur.

Exemples

* Pour réinitialiser la session d’un utilisateur connecté sur le même serveur sur lequel vous êtes connecté

=> Depuis l’invite de commande, vous saisissez dans un premier temps : Query session

1

Comme illustré dans l’image ci-dessus, l’utilisateur hkadiri a une session RDP Actif, nommée RDP-TCP#1 et portant l’ID 3

=> Maintenant que nous avons noté les informations sur la session Bureau à distance ouverte par l’utilisateur hkadiri, nous pourrons lui réinitialiser sa session du serveur, soit en utilisant

  1. Le nom de sa session actif         : Reset Session rdp-tcp#1 
  2. L’ID de sa session actif              : Reset Session 3

Notez que dans les 2 cas, la session de l’utilisateur hkadiri est réinitialisée.

* Pour réinitialiser la session d’un utilisateur connecté sur un serveur distant (TSE et/ou RDSH) 

=> Depuis l’invite de commande, vous saisissez dans un premier temps : Query session /Server:NomDuServeurDistant

Dans l’exemple suivant, nous allons lister les sessions Bureau à distance actives sur le serveur distant LABRDSH02

8

=> Pour réinitialiser la session de l’utilisateur hkadiri connecté sur le serveur distant LABRDSH02, l’une des commandes suivantes est utilisée :

  1. En utilisant le nom de sa session : Reset Session rdp-tcp#1 /Server:LABRDSH02

  2. En utilisant l’ID de sa session       : Reset Session 3 /Server:LABRDSH02

Enfin, vous pouvez utiliser le paramètre /V pour afficher les actions effectuées, plus précisément l’action de Réinitialisation de la session spécifiée.

Pour reprendre l’exemple précédent, nous allons Réinitialiser la session de l’utilisateur distant hkadiri en utilisant l’ID de session et le paramètre /V

Reset Session 3 /Server:LABRDSH02 /V

Comme montré dans l’image ci-après, l’action (Réinitialisation de session) est affichée:

RESET_2

 

S’applique à : Windows XP, Windows 2003 Server, Windows Vista, Windows 7, Windows 2008 Server, Windows 2008 Server R2, Windows 8, Windows 8.1, Windows 2012 Server, Windows 2012 Server R2, Windows 10, Windows 2015 Server

A noter que certains paramètres et instructions ne sont disponibles que sur les dernières versions de Windows Server et Windows Client, e.i Windows 8.1 /10 – Windows 2012 Server R2: lancer logoff.exe /? dans un premier temps pour vérifier la liste des paramètres disponibles

Introduction

Logoff.exe est un outil en ligne de commande natif dans les systèmes d’exploitation Windows Server et Windows Client.

Il permet de fermer une session Windows « locale » ou une session « Bureau à distance » hébergée sur un Serveur Hôte de session Bureau à distance ou Terminal Server.
Syntaxe

LOGOFF [session | id_session] [/SERVER:serveur] [/V] [/VM]

-? | Help | Pour obtenir de l’aide. N’hésitez pas à utiliser logoff /? ou logoff -? pour connaître la liste complète des paramètres disponibles pour la version de Windows (Client ou Serveur) installée sur vos machines

Session | Nom de la Session à fermer
id session | ID de la session (numéro de session) à fermer
/Server | suivi de : et le nom du serveur distant (Hote de session ou TSE) sur lequel la session à fermer est hébergée
/V | Permet d’afficher les informations sur les actions effectuées

NOTE

-> Si le paramètre /Server n’est pas spécifié, le serveur ou poste de travail sur lequel vous êtes connecté est spécifié par défaut ! attention à ne pas saisir Logoff.exe ou Logoff uniquement depuis le même serveur /poste de travail, cela fermera votre session !

-> Toutes les commandes ci-dessous sont exécutées depuis l’invite de commande (cmd.exe) lancée en tant qu’Administrateur.

Exemples

* Pour fermer la session d’un utilisateur connecté sur le même serveur sur lequel vous êtes connecté

=> Depuis l’invite de commande, vous saisissez dans un premier temps : Query session

1

Comme illustré dans l’image ci-dessus, l’utilisateur hkadiri a une session RDP Actif, nommée RDP-TCP#1 et portant l’ID 3

=> Maintenant que nous avons noté les informations sur la session Bureau à distance ouverte par l’utilisateur hkadiri, nous pourrons fermer sa session du serveur, soit en utilisant

1. Le nom de sa session actif         : Logoff rdp-tcp#1 
2. L’ID de sa session actif              : Logoff 3

Notez que dans les 2 cas, la session de l’utilisateur hkadiri est fermée.

* Pour fermer la session d’un utilisateur connecté sur un serveur distant (TSE et/ou RDSH) 

=> Depuis l’invite de commande, vous saisissez dans un premier temps : Query session /Server:NomDuServeurDistant

Dans l’exemple suivant, nous allons lister les sessions Bureau à distance actives sur le serveur distant LABRDSH02

8

=> Pour fermer la session de l’utilisateur hkadiri connecté sur le serveur distant LABRDSH02, l’une des commandes suivantes est utilisée :

1. En utilisant le nom de sa session : Logoff rdp-tcp#1 /Server:LABRDSH02

2. En utilisant l’ID de sa session       : Logoff 3 /Server:LABRDSH02

Enfin, vous pouvez utiliser le paramètre /V pour afficher les actions effectuées, plus précisément l’action de Fermeture de la session spécifiée.

Pour reprendre l’exemple précédent, nous allons fermer la session de l’utilisateur distant hkadiri en utilisant l’ID de session et le paramètre /V

Logoff 3 /Server:LABRDSH02 /V

Comme montré dans l’image ci-après, l’action (fermeture de session) est affichée:

120

Pour terminer, le paramètre /VM peut être utilisé pour fermer une session ouverte sur un serveur virtuel distant ou poste de travail virtuel exécutée sur un Hyperviseur. Notez qu’uniquement l’ID de la session peut être utilisé mais pas le nom de la session.

 

S’applique à : Windows Vista, Windows 7, Windows 2008 Server, Windows 2008 Server R2, Windows 8, Windows 8.1, Windows 2012 Server, Windows 2012 Server R2, Windows 10

A noter que certains paramètres et instructions ne sont disponibles que sur les dernières versions de Windows Server et Windows Client, e.i Windows 8.1 /10 – Windows 2012 Server R2: lancer msg.exe /? dans un premier temps pour vérifier la liste des paramètres disponibles

Introduction

MSG.exe est un outil en ligne de commande natif dans les systèmes d’exploitation Windows Server et Windows Client.

Il permet d’envoyer des messages à un ou plusieurs utilisateurs du réseau ayant une session Windows active (locale ou  distante sur un serveur Hôte de session Bureau à distance /TSE).

Il est très utilisé dans les environnements TSE (Terminal Services) et/ou RDS (Remote Desktop Services ou Services Bureau à distance) pour par exemple demander à un ou plusieurs utilisateurs Bureau à distance de déconnecter leurs sessions pour une maintenance de la dernière minute ou pour demander la fermeture d’un programme /application qui consomme beaucoup de ressources (RAM, CPU..) du serveur distant ou tout simplement pour inviter les utilisateurs Bureau à distance de rejoindre une réunion de la dernière minute
Syntaxe

MSG {utilisateur | session | id_session | @nom_fichier | *} [/SERVER:serveur] [/TIME:secondes] [/V] [/W] [message]

-? | Help | Pour obtenir de l’aide. N’hésitez pas à utiliser msg /? ou msg -? pour connaître la liste complète des paramètres disponibles pour la version de Windows (Client ou Serveur) installée sur vos machines

Utilisateur | Nom d’utilisateur auquel le message sera envoyé
Session | Nom de la Session à laquelle le message sera envoyé
id session | ID de la session (numéro de session) à laquelle le message sera envoyé
@nom_fichier | Nom du fichier (texte) contenant une liste des utilisateurs ou leurs noms de sessions ou encore leurs ID de sessions auxquels le message sera envoyé. C’est pratique quand vous voulez envoyer le même message à un groupe d’utilisateurs distants. Le fichier texte peut être généré à partir de la commande Query session>C:\ListeUtilisateurs.txt
* | Le message est envoyé à tout le monde : à toute session Windows distante ouverte sur le serveur spécifié avec le paramètre /Server)
/Server | suivi de : et le nom du serveur sur lequel l’utilisateur auquel vous voulez envoyer le message est connecté /a une session active
/Time | suivi de : et le nombre de secondes durant lesquelles le message reste affiché sur la session de l’utilisateur distant

Note : si le paramètre /Server n’est pas spécifié, le serveur depuis lequel vous envoyez le message est spécifié par défaut ! | si le paramètre /Time n’est pas spécifié, le message reste affiché sur la session de l’utilisateur auquel le message est envoyé jusqu’à que celui-ci clique sur le bouton OK

ASTUCE

-> Pour connaître la liste complète des utilisateurs connectés sur un serveur local ainsi que leurs noms  de sessions ou encore ID des sessions, lancez la commande suivante depuis cmd.exe :  Query Session

-> Toutes les commandes ci-dessous sont exécutées depuis l’invite de commande (cmd.exe) lancée en tant qu’Administrateur.

Exemples

* Pour envoyer un message un utilisateur connecté via Bureau à distance sur le même serveur depuis lequel vous envoyez le message

=> Depuis l’invite de commande, vous saisissez dans un premier temps : Query session

1

Comme illustré dans l’image ci-dessus, l’utilisateur hkadiri a une session RDP Actif, nommée RDP-TCP#1 et portant l’ID 3

=> Maintenant que nous avons noté les informations sur la session Bureau à distance ouverte par l’utilisateur hkadiri, nous pourrons lui envoyer un message via MSG.exe en utilisant soit :

  1. Son nom d’utilisateur                : MSG hkadiri  « Salut Hicham, peux-tu te déconnecter STP ?! »
  2. Le nom de sa session actif         : MSG rdp-tcp#1 « Salut Hicham, peux-tu te déconnecter STP ?! »
  3. L’ID de sa session actif              : MSG 3 « Salut Hicham, peux-tu te déconnecter STP ?! »

Notez que dans les 3 cas, le message est envoyé et la boite de dialogue suivante est affichée sur la session distante de l’utilisateur hkadiri :

2

* Pour envoyer un message à plusieurs utilisateurs connectés via Bureau à distance sur le même serveur depuis lequel vous envoyez le message

=> Dans l’exemple précédent, vous avez remarqué que deux utilisateurs Bureau à distance sont connectés :hkadiri et jdeo

3

Maintenant, nous allons envoyer le même message à l’ensemble des utilisateurs Bureau à distance en utilisant le paramètre * :

MSG * « Bonjour, n’oubliez pas la réunion technique de 16h, soyez à l’heure ! »

Tous les utilisateurs ayant une session active sur le serveur depuis lequel ce message est envoyé reçoivent le message. Dans notre exemple, il s’agit des utilisateurs hkadiri & jdeo.

4

5

6

 

 

 

 

 

* Pour envoyer un message à une liste d’utilisateurs connectés via Bureau à distance sur le même serveur depuis lequel vous envoyez le message en utilisant un fichier texte.

=> Vous pouvez créer ou générer un fichier texte contenant la liste des utilisateurs auquel vous voulez envoyer un message. Dans l’exemple suivant, je vais utiliser un fichier texte nommé UtilisateursRDS.txt placé sur mon bureau

7

A l’aide du paramètre @nom_fichier (dans notre exemple @UtilisateursRDS.txt) nous allons envoyer le même message à l’ensemble des utilisateurs qui y sont listés. La commande suivante est utilisée :

MSG @UtilisateursRDS.txt « Rappel : une maintenance est prevue sur le serveur RDSH dans 30min ! »

Tous les utilisateurs spécifiés dans le fichier texte @UtilisateursRDS.txt reçoivent donc le message.

Note : vous devez vous positionner sur le Bureau (depuis l’invite de commande) pour que l’outil MSG.exe trouve votre fichier texte. Si vous êtes sous %windir%\system32 (généralement chemin par défaut sur cmd.exe), il faudrait utiliser la commande CD pour naviguez jusqu’au \Bureau ou \Desktop.

* Pour envoyer un message à un utilisateur connecté via Bureau à distance sur un serveur distant

ASTUCE

-> Pour connaître la liste complète des utilisateurs connectés sur un serveur distant ainsi que leurs noms  de sessions ou encore ID des sessions, lancez la commande suivante depuis cmd.exe : Query Session /Server:Hostname_Serveur_distant

=> Par exemple pour connaître la liste des utilisateurs Bureau à distance connectés sur le serveur distant LABRDSH02, la commande suivante est utilisée : Query Session /Server:LABRDSH02

=> Vous devez noter dans un premier temps le nom d’utilisateur ou le nom de la session ou encore l’ID de la session depuis le résultat retourné par la commande Query Session. Dans l’exemple suivant, l’utilisateur hkadiri est connecté sur le serveur LABRDSH02, et a une session RDP active :

8

=> Pour envoyer un message un l’utilisateur distant hkadiri connecté sur le serveur distant LABRDSH02, la commande suivante est utilisée

MSG hkadiri  /Server:LABRDSH02 « Bonjour Hicham, n’oublie pas la réunion de 16h ! »

Le message envoyé sur la session de hkadiri reste affiché jusqu’à ce que dernier clique sur le bouton OK. A l’aide du paramètre /Time vous pouvez spécifier un détail d’affichage (en secondes) du message.

=> Dans l’exemple suivant, nous allons envoyer le même message à l’utilisateur hkadiri avec un délai d’affichage de 5 secondes

MSG hkadiri  /Server:LABRDSH02 /Time:5 « Bonjour Hicham, n’oublie pas la réunion de 16h ! »

Vous pouvez utiliser le paramètre /V pour afficher des informations sur toutes les actions effectuées, comme l’envoie du message, réception du message … la commande à utiliser est donc :

MSG hkadiri  /Server:LABRDSH02 /V « Bonjour Hicham, n’oublie pas la réunion de 16h ! »

Les actions effectuées sont affichées comme illustré dans l’image ci-après :

9

Enfin, le paramètre /W peut être utilisé pour attendre la réponse de l’utilisateur distant (réponse = clic sur le bouton OK) après avoir envoyé le message, généralement il est utilisé avec le paramètre /V qui vous permet de voir si l’utilisateur distant a bien reçu le message et vous retourne l’action effectuée par celui-ci.

MSG hkadiri  /Server:LABRDSH02 /V /W « Bonjour Hicham, n’oublie pas la réunion de 16h ! »

L’accusé de réception est affiché comme illustré dans l’image ci-après :

10

Notez qu’il est recommandé d’utiliser les deux paramètres /V et /W en même temps, ça vous permettra de voir les actions effectuées, depuis l’envoie du message jusqu’à réception de la réponse de l’utilisateur distant.