Lorsqu’on déploie le client HTML5 de Bureau à distance, l’erreur « RD Web Access does not appear to be installed » peut bloquer la mise en production : ce guide exhaustif détaille chaque cause possible, les vérifications à effectuer et les commandes PowerShell pour rétablir un environnement RDS sain.
Erreur : « RD Web Access does not appear to be installed » lors de Publish‑RDWebClientPackage
Vue d’ensemble du problème
Sur un hôte Windows Server 2019, exécuter :
Publish‑RDWebClientPackage ‑Type Production ‑Latest
affiche la séquence :
WARNING: The requested Remote Desktop web client is already installed.
ERROR : RD Web Access does not appear to be installed on the system.
Pourtant :
- Le module
RDWebClientManagement
est chargé (Get‑Command -Module RDWebClientManagement
). - Le Gestionnaire de serveur signale que les rôles RDS sont installés.
Pourquoi cette incohérence ?
Publish‑RDWebClientPackage procède à six contrôles préalables :
- Présence de la fonctionnalité
RDS-Web-Access
. - Existence du site IIS
Default Web Site\RDWeb
. - Associations de certificat valides (HTTPS : TLS 1.0+).
- Version minimale du module
RDWebClientManagement
(≥ 1.0.5). - Application
/webclient
non verrouillée par un processus IIS. - Appartenance de la machine au déploiement RDS courant.
Si l’un de ces tests échoue, la cmdlet renvoie l’erreur ci‑dessus, même si l’interface graphique RDS semble correcte.
Tableau des causes probables
Cause possible | Explication rapide |
---|---|
Rôle RD Web Access absent ou incomplet | Le package vérifie la fonctionnalité RDS-Web-Access et le site IIS « RDWeb ». |
Mauvais serveur cible | La cmdlet doit être exécutée sur le serveur qui héberge RD Web Access. |
Installation RDS partielle / corrompue | La console RDS peut répertorier un rôle supprimé manuellement ; les binaires IIS ne sont plus présents. |
Version obsolète du module | Avant la version 1.0.5, la détection de RD Web Access est lacunaire. |
Bindings IIS incorrects | Certificat périmé, port 443 absent ou application dissociée. |
Étapes de résolution détaillées
1. Vérifier / (ré)installer la fonctionnalité RD Web Access
# Contrôle
Get-WindowsFeature RDS-Web-Access
# Installation si nécessaire
Install-WindowsFeature RDS-Web-Access –IncludeManagementTools –Restart
Après redémarrage, ouvrez IIS : le site RDWeb
doit apparaître sous Default Web Site
. Absence ? La fonctionnalité ne s’est pas correctement inscrite ; réexécutez Install-WindowsFeature
et surveillez le journal CBS.log
.
2. Exécuter les cmdlets sur le bon serveur
Dans un déploiement à plusieurs hôtes (broker, gateway, web access), la confusion est fréquente. Ouvrez PowerShell en mode administrateur sur le serveur où IIS héberge RDWeb :
Get-Website | Where-Object { $_.Name -like "*RDWeb*" }
Si la commande renvoie un résultat, vous êtes sur le bon hôte ; sinon, basculez vers l’autre nœud.
3. Mettre à jour ou réinstaller le module RDWebClientManagement
Find-Module RDWebClientManagement | Select-Object Version,Repository
Uninstall-Module RDWebClientManagement -AllVersions -Force
Install-Module RDWebClientManagement -RequiredVersion 1.0.5 # ou la plus récente
Import-Module RDWebClientManagement
Assurez‑vous que le chargement ne déclenche pas d’erreur ; le module doit figurer dans $env:PSModulePath
.
4. Contrôler la cohérence du déploiement RDS
# Liste complète
Get-RDServer | Format-Table Server,Roles
# URL et bindings Web Access
Get-RDWebAccessConfiguration
Un serveur fantôme apparaît ? Supprimez‑le :
Remove-RDServer -Server "SRV-ANCIEN" -Role RDS-Web-Access
Répétez l’opération pour chaque rôle absent physiquement.
5. Reconstruire le site IIS RDWeb
Si les fichiers physiques sont corrompus (extensions .aspx
manquantes, pool d’applications inopérant), réinstallez :
# Sauvegarde éventuelle du certificat
Export-PfxCertificate -Cert "Cert:\LocalMachine\My\" -FilePath C:\backup\rdweb.pfx -Password (Read-Host -AsSecureString "Mot de passe")
# Désinstallation + réinstallation
Remove-WindowsFeature RDS-Web-Access
Install-WindowsFeature RDS-Web-Access –IncludeManagementTools
# Réimport du certificat
Import-PfxCertificate -FilePath C:\backup\rdweb.pfx -CertStoreLocation Cert:\LocalMachine\My -Password (Read-Host -AsSecureString "Mot de passe")
Vérifiez ensuite :
Test-NetConnection -ComputerName localhost -Port 443
6. Activer TLS 1.2 avant la publication
Par défaut, Windows Server 2019 active TLS 1.0/1.1/1.2. Toutefois, si TLS 1.2 a été désactivé via des GPO « hardening », la publication peut échouer car les cmdlets contactent les services WU via HTTPS.
# Pour forcer TLS1.2 dans .NET 4+
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Ou modifiez la ruche :
# Activation permanente côté OS
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" -Name "Enabled" -Value 1 -PropertyType "DWord" -Force
7. Nettoyer d’anciens packages HTML5
Une publication antérieure incomplète peut bloquer la nouvelle :
Get-RDWebClientPackage | Format-Table PackageType,Version,InstallDate
Uninstall-RDWebClientPackage -Type Production -Version "1.0.34.8"
Puis relancez :
Publish-RDWebClientPackage -Type Production -Latest -Verbose
8. Vérifier les journaux pour diagnostiquer finement
Chemin | Intérêt |
---|---|
Event Viewer > Applications and Services Logs > Microsoft > Windows > TerminalServices-RemoteConnectionManager | Échecs de rôle RDS lors de l’initialisation. |
IISLogs\W3SVC1 | Détails HTTP/HTTPS, erreurs 404 sur /RDWeb . |
%SystemRoot%\Logs\RDWebClientManagement | Trace fine des cmdlets Publish‑RDWebClientPackage . |
9. Cas des fermes à équilibrage de charge
Dans un scénario NLB ou avec un équilibreur externe :
- Installez RD Web Access sur chaque nœud.
- Publiez le client HTML5 sur un nœud, puis répliquez le répertoire
%SystemDrive%\inetpub\wwwroot\RDWeb\webclient
sur les autres (robusité). - Veillez à ce que le certificat wildcard ou SAN couvre l’adresse VIP, sinon la page blanche « Cannot fetch client configuration » s’affiche.
10. Checklist finale avant re‑mise en production
- Fonctionnalité
RDS-Web-Access
: ✔ - Site IIS
RDWeb
accessible en HTTPS et renvoyant le contenu par défaut : ✔ - Module
RDWebClientManagement
à jour : ✔ - Serveur exécutant la cmdlet ≡ serveur hébergeant RD Web Access : ✔
- Aucune version obsolète du client HTML5 installée : ✔
- TLS 1.2 activé et certificat non expiré : ✔
Bonnes pratiques pour un environnement RD Web Access robuste
Sécurisation HTTPS et HSTS
Activez HSTS et redirigez HTTP → HTTPS
dans le gestionnaire IIS pour éviter les requêtes non chiffrées. Pensez à renouveler les certificats (ACME, gestion automatisée) avant la date d’expiration ; le client HTML5 refusera les connexions si le certificat n’est plus valide.
Surveillance et alertes
Configurez un journal unique (Microsoft‑Windows‑TerminalServices‑RemoteConnectionManager/Operational
) et des alertes SCOM ou scripts PowerShell (Register-ScheduledJob
) envoyant un e‑mail dès qu’une erreur 500 ou 503 apparaît.
Gestion des mises à jour
Le client HTML5 évolue régulièrement ; la cmdlet Publish‑RDWebClientPackage -Latest
récupère la version publiée par Microsoft. Pour éviter une panne intempestive :
- Testez toujours sur une collection de validation avant de pousser en production.
- Documentez la version précédente pour un éventuel rollback :
Publish-RDWebClientPackage -Type Test -Version "1.0.34.8" -Verbose
Automatisation DevOps
Intégrez vos scripts dans une pipeline (Azure DevOps/YAML ou GitHub Actions). Exemple minimal :
steps:
- powershell: |
Install-Module RDWebClientManagement -Force
Publish-RDWebClientPackage -Type Production -Latest -Verbose
displayName: 'Deploy HTML5 RDWeb client'
Versionnez le fichier RDWebClientSettings.json
pour reproduire la configuration (UI brandée, langues désactivées, etc.).
Sauvegarde quotidienne du site RDWeb
$backupDir = "D:\Backup\RDWeb_$(Get-Date -Format 'yyyyMMdd')"
Copy-Item "C:\inetpub\wwwroot\RDWeb" -Destination $backupDir -Recurse -Force
Stockez au moins sept versions ; un simple robocopy /MIR
restaure le site en cas de corruption.
Foire aux questions (FAQ)
Le rôle RD Web Access est installé mais le site IIS RDWeb
n’existe pas. Pourquoi ?
Bien que rare, l’installation peut échouer si IIS a été désinstallé puis réinstallé sans supprimer le rôle RDS. Dans ce cas, la fonctionnalité RDS-Web-Access est marquée installée mais les scripts post‑install n’ont pas généré le site. Réinstallez la fonctionnalité comme indiqué plus haut.
La cmdlet Publish‑RDWebClientPackage
reste bloquée sur « Checking RDWeb ».
Cela se produit souvent si le pool d’applications RDWebAccessAppPool
est arrêté ou si un proxy sortant bloque l’appel HTTP à Windows Update. Redémarrez le pool et vérifiez netsh winhttp show proxy
.
Puis‑je installer RD Web Access sur un serveur ne faisant pas partie du domaine ?
Non. Le rôle exige l’adhésion au domaine Active Directory pour fonctionner avec le broker et récupérer les collections.
Conclusion
En résumé, l’erreur « RD Web Access does not appear to be installed » est presque toujours liée à un décalage entre la réalité IIS/Windows Feature et l’état enregistré dans la base WMI de RDS. En suivant pas à pas les vérifications de ce guide—installation de la fonctionnalité, intégrité du site IIS, cohérence du déploiement RDS et mise à jour des modules PowerShell—vous éliminerez les causes racines et redonnerez à vos utilisateurs un accès web HTML5 fiable à leurs bureaux et applications distants.