PROJET AUTOBLOG


IT-Connect

Site original : IT-Connect

⇐ retour index

Windows Server 2019 : Installer un serveur RDS avec PowerShell

mercredi 27 mai 2020 à 09:15

I. Présentation

Après avoir vu ensemble comment déployer un serveur RDS à l'aide de l'interface graphique, je vous propos de voir comment réaliser un déploiement équivalent d'un serveur RDS mais cette fois-ci à l'aide de PowerShell. Utile pour faire un script de déploiement d'un serveur, même si l'on pourra préférer l'utilisation d'un outil comme PowerShell DSC si les déploiements sont fréquents.

Dans cet article, je vais utiliser Windows Server 2019 mais le tutoriel s'applique aussi, à minima, à Windows Server 2016. Le serveur RDS que je vais déployer sera unique donc il hébergera les différents rôles, il est membre du domaine it-connect.local et se nomme SRV-RDS-01.

Si vous êtes prêt, ouvrez une console PowerShell en tant qu'administrateur (du domaine) sur votre serveur et on y va...

II. Installer les rôles RDS en PowerShell

La première étape consiste à ajouter la fonctionnalité "RDS-RD-Server" à notre futur serveur RDS. Personnellement, sans commencer par installer cette fonctionnalité j'obtenais une erreur sur les commandes suivantes ("New-RDSessionDeployment : Validation failed for the "RD Session Host" parameter / You cannot restart the local server."). Il est à noter que le serveur va redémarrer automatiquement.

Add-WindowsFeature RDS-RD-Server -Restart

Lorsque le serveur a redémarré, retournez sur PowerShell et exécutez les deux commandes ci-dessous : la première va importer le module PowerShell associé au RDS et la seconde va lister les commandes de ce module.

Import-Module RemoteDesktop
Get-Command -Module RemoteDesktop

Maintenant, nous allons déployer notre service RDS, en définissant les différents rôles.

Nous allons utiliser la commande New-RDSessionDeployment et les paramètres -ConnectionBroker, -WebAccessServer, et -SessionHost et attribuer comme valeur le nom du serveur que l'on veut associer à chaque rôle. Ces rôles correspondent (dans l'ordre) au service Broker, à l'accès RDS via le portail web et au serveur hôte des sessions RDS.

Dans cet exemple, il y a qu'un seul serveur donc je vais indiquer le même nom pour chaque paramètre. Il est important d'indiquer le nom FQDN du serveur, si vous indiquez seulement le nom NetBIOS ça ne fonctionnera pas.

Note : Vous devez être administrateur du domaine pour pouvoir exécuter cette commande.

New-RDSessionDeployment -ConnectionBroker SRV-RDS-01.it-connect.local -SessionHost SRV-RDS-01.it-connect.local -WebAccessServer SRV-RDS-01.it-connect.local

L'installation va durer plusieurs minutes mais la console PowerShell permet de suivre le déploiement des différents rôles, ce qui est plutôt appréciable.

Lorsque c'est terminé, s'il n'y a pas d'erreur, vous pouvez retrouver la console RDS dans le gestionnaire de serveur. A cet endroit, vous verrez que dans la liste des serveurs déployés, nous retrouvons notre serveur SRV-RDS-01.it-connect.local avec ses trois rôles.

III. Configurer le licensing RDS

Maintenant, nous allons déclarer notre serveur comme étant un serveur de licence RDS, via le rôle "RDS-LICENSING". Il est nécessaire d'utiliser le cmdlet Add-RDServer puisqu'il sert à ajouter un serveur RDS à un déploiement RDS, autrement dit à une infrastructure RDS existante.

Ce qui donne :

Add-RDServer -Server SRV-RDS-01.it-connect.local -Role RDS-LICENSING -ConnectionBroker SRV-RDS-01.it-connect.local

Comme pour l'étape d'installation précédente, il faut patienter pendant l'installation du rôle.

Afin de configurer un mode de configuration "Par utilisateur" pour l'attribution des licences, il faut que l'on modifie la configuration du rôle RDS Licensing. Le cmdlet Set-RDLicenseConfiguration va nous aider.

Le paramètre -Mode pourra prendre deux valeurs : PerUser / PerDevice, en fonction de vos besoins, à savoir des licences attribuées par utilisateur ou par périphérique.

Ce qui donne :

Set-RDLicenseConfiguration -LicenseServer SRV-RDS-01.it-connect.local -Mode PerUser -ConnectionBroker SRV-RDS-01.it-connect.local

Vous devez confirmer la modification en indiquant "Y" pour Yes dans la console. Cela aurait pu être évité en ajoutant le paramètre -Force à la commande (utile pour un script n'est-ce pas).

Vous pouvez afficher la configuration du licensing avec cette commande :

Get-RDLicenseConfiguration

Le mode actif s'affiche :

 

IV. Créer une collection et publier une application

Dernière étape de ce tutoriel, la création d'une collection nommée "RdsApp" et qui va utiliser notre serveur SRV-RDS-01 dans le but de publier l'application Wordpad en RemoteApp.

La commande New-RDSessionCollection sera utilisée, avec plusieurs arguments : -CollectionName pour le nom de la collection, -CollectionDescription pour une description, -ConnectionBroker pour indiquer le serveur Broker lié et enfin -SessionHost pour le serveur de gestion des sessions à utiliser. Puisqu'il s'agit d'un déploiement mono-serveur dans notre cas, nous utilisons le même serveur pour les deux rôles.

Voici la commande :

New-RDSessionCollection -CollectionName "RdsApps" -CollectionDescription "Collection RDS pour accéder aux apps IT-Connect" -ConnectionBroker SRV-RDS-01.it-connect.local -SessionHost SRV-RDS-01.it-connect.local

Ce qui retourne :

Puisque nous sommes curieux, on peut regarder dans le Gestionnaire de serveur afin de vérifier que la collection apparaît bien.

Au sein de la collection RdsApps, si l'on souhaite modifier ses options il faut s'appuyer sur le cmdlet Set-RDSessionCollectionConfiguration. Le paramètres "-CollectionName" sert à spécifier la collection que l'on souhaite modifier.

Par exemple, pour les options liées aux dossiers temporaires, notamment pour désactiver les options "Utiliser des dossiers temporaires par session" et "Supprimer les dossiers temporaires en quittant", on va utiliser cette commande :

Set-RDSessionCollectionConfiguration -CollectionName "RdsApps" -TemporaryFoldersPerSession $false -TemporaryFoldersDeletedOnExit $false

Dans le même esprit pour modifier les options "Mettre fin à une session déconnectée" (DisconnectedSessionLimitMin) et "Limite de session inactive" (IdleSessionLimitMin) on va s'appuyer sur le même cmdlet. La limite de session active, définie par défaut sur "Jamais" peut être modifiée également (ActiveSessionLimitMin). Les durées s'expriment en minutes.

Voici un exemple :

Set-RDSessionCollectionConfiguration -CollectionName "RdsApps" -DisconnectedSessionLimitMin 360 -IdleSessionLimitMin 120

Ensuite, le cmdlet "Get-RDSessionCollectionConfiguration" sert à afficher la configuration d'une collection par catégorie de paramètres. Pour obtenir les paramètres de session que l'on vient de configurer, nous utiliserons cette commande :

Get-RDSessionCollectionConfiguration -CollectionName "RdsApps" -Connection

Pensez à fermer le gestionnaire de serveur s'il était ouvert et à le rouvrir pour l'actualiser correctement. On peut remarquer que la nouvelle configuration est bien prise en charge :

D'autres options pour gérer les disques de profils, la sécurité ou encore les périphériques qui peuvent être redirigés dans les sessions RDP sont disponibles. Je vous invite à consulter l'aide Microsoft du cmdlet si besoin :

📌 Set-RDSessionCollectionConfiguration

Déploiement de Wordpad.exe comme RemoteApp...

Pour finir ce tutoriel, nous allons déployer l'application native Wordpad afin qu'elle soit accessible en RemoteApp directement à partir du portail RDP Web. Pour réaliser cette opération, le cmdlet New-RDRemoteApp doit être utilisé avec plusieurs paramètres, notamment le nom de l'application (DisplayName), le chemin d'accès à l'exécutable (FilePath), le nom de la collection à laquelle l'attribuer (CollectionName), le serveur Broker (ConnectionBroker) et l'option "ShowInWebAccess" que l'on passera à "1" pour publier l'application sur le portail Web.

New-RDRemoteApp -Alias WordPad -DisplayName WordPad -FilePath "C:\Program Files\Windows NT\Accessories\wordpad.exe" -ShowInWebAccess 1 -CollectionName "RdsApps" -ConnectionBroker SRV-RDS-01.it-connect.local

Ce qui donne :

L'application est publiée également sur le portail Web du RDS puisque l'option ShowInWebAccess est définie sur "1" comme évoqué précédemment. Ce portail est accessible à l'adresse suivante :

https://srv-rds-01.it-connect.local/RDWeb

On peut se connecter avec le compte Administrateur pour tester...

Notre fameux Wordpad est bien là, prêt à être utilisé en tant que RemoteApp 😉🙏

Le déploiement de votre environnement RDS mono-serveur via PowerShell touche à sa fin, en tout cas le tutoriel s'arrête ici. Pensez à ajouter vos CALs RDS sur votre serveur de licence, mais pour cette partie il faudra obligatoirement repasser par l'interface graphique.

📌 Tutoriel - Ajouter CAL RDS