Vous tentez de modifier une Resource Authorization Policy (RAP) sur un serveur Remote Desktop Gateway exécutant Windows Server 2022 Datacenter et la console s’effondre avec le message : « WMI failure: Unable to Update Resource Access Policy ». Découvrez comment diagnostiquer, corriger et prévenir durablement ce dysfonctionnement.
Vue d’ensemble du problème
Dans une installation Quick Start de Remote Desktop Services, le rôle RD Gateway s’appuie sur Windows Management Instrumentation (WMI) pour compiler et écrire des scripts au moment où l’administrateur enregistre une RAP. Lorsque WMI échoue à cette étape, la console Gestion du Gestionnaire RD Gateway se ferme brutalement ou signale l’erreur sans permettre la sauvegarde. Le plus souvent, deux causes racines expliquent ce scénario : le déplacement des variables d’environnement TEMP/TMP vers un emplacement inadapté ; la présence de noms d’hôtes obsolètes dans la stratégie.
Tableau récapitulatif des causes et correctifs rapides
Cause identifiée | Correctif | Remarques utiles |
---|---|---|
Variables TEMP/TMP déplacées | Rétablir TEMP et TMP sur C:\Windows\Temp puis redémarrer le rôle RD Gateway (ou le serveur). | Le fournisseur WMI du rôle écrit et exécute des scripts temporaires dans ce dossier ; un chemin situé sur un volume non‑NTFS, réseau ou sans droits NT FS adéquats déclenche l’échec de la compilation MOF. |
Ordinateurs obsolètes dans la RAP | Supprimer tout nom d’hôte inexistant dans l’AD ou le DNS, enregistrer de nouveau la stratégie. | À chaque validation, RD Gateway résout et vérifie tous les objets ; un hôte introuvable génère la même chaîne d’erreur WMI. |
Contexte technique du rôle RD Gateway et de WMI
RD Gateway expose une interface HTTPS qui encapsule le trafic RDP. Lorsqu’un client se connecte, le service TsgGateway
applique successivement les politiques CAP (Connection Authorization Policy) et RAP. Les RAP s’appuient sur des classes WMI stockées dans le namespace root\cimv2\TerminalServices
. À chaque modification, la console écrit un script MOF, le compile via mofcomp.exe
et met à jour le référentiel. Cette chaîne dépend :
- du compte service NETWORK SERVICE (droits NTFS et accès DCOM) ;
- de l’intégrité du référentiel WMI (
%SystemRoot%\System32\wbem\Repository
) ; - de l’emplacement
TEMP/TMP
qui doit être local, NTFS, accessible en lecture/écriture.
Symptômes et journaux à surveiller
- Fenêtre « Remote Desktop Gateway Manager » qui disparaît ou message « Unable to Update Resource Access Policy » lors de l’enregistrement.
- Événements ID 10 ou ID 5858 dans WMI-Activity signalant une erreur d’exécution de script.
- Entrées ID 101, 302 ou 304 dans TerminalServices‑Gateway indiquant une opération de configuration avortée.
- L’invite
mofcomp.exe
retourne un code 3 (Directory not found) siTEMP
n’est pas valide.
Dépannage pas à pas
Vérifier les services WMI
Ouvrez une invite PowerShell élevée et exécutez :
Get-Service Winmgmt, RpcSs, Tsgateway | Format-Table -Auto
Tous doivent être à l’état Running. Redémarrez Winmgmt
si nécessaire :
Restart-Service -Name Winmgmt -Force
Contrôler les variables d’environnement
Depuis la même session PowerShell :
[Environment]::GetEnvironmentVariable('TEMP','Machine')
[Environment]::GetEnvironmentVariable('TMP','Machine')
Si la sortie n’est pas C:\Windows\Temp, rétablissez‑la :
[Environment]::SetEnvironmentVariable('TEMP','C:\Windows\Temp','Machine')
[Environment]::SetEnvironmentVariable('TMP','C:\Windows\Temp','Machine')
Pensez à vérifier également les variables au niveau User pour le compte NETWORK SERVICE via l’outil setx
ou en éditant directement le registre HKU\S-1-5-20\Environment
. Après modification, redémarrez le serveur ou, à défaut, redémarrez les services Tsgateway
et Winmgmt
.
Nettoyer les entrées fantômes dans la RAP
Dans la console RD Gateway Manager :
- Ouvrez la RAP incriminée.
- Allez dans l’onglet Network Resources.
- Supprimez ou remplacez tout hôte ne répondant plus au ping DNS/AD.
- Enregistrez la stratégie ; l’erreur devrait disparaître.
Vous pouvez automatiser la détection d’entrées orphelines avec PowerShell :
Get-WmiObject -Namespace 'root\cimv2\TerminalServices' -Class Win32_TSGatewayResource
| Where-Object { -not (Test-Connection $_.Name -Count 1 -Quiet) }
| Select-Object Name
Diagnostiquer WMI de manière approfondie
- Exécutez l’outil Microsoft WMIDiag.vbs. Le rapport (
WMI_Diag.log
) liste les problèmes de sécurité, d’espace disque ou de structure du référentiel. - Exécutez
winmgmt /verifyrepository
. Si l’outil retourne Inconsistent, procédez àwinmgmt /salvagerepository
. - Si la compilation MOF échoue, supprimez les fichiers
*.mof
restés bloqués dans%SystemRoot%\Temp
puis relancezmofcomp %windir%\system32\TerminalServices\tsgateway.mof
.
Important : ne recréez le référentiel WMI (/resetrepository
) qu’en dernier recours ; cela réinitialise les providers Hyper‑V, WSUS et peut perturber d’autres rôles.
Redémarrage contrôlé du rôle RD Gateway
Pour éviter une coupure utilisateur prolongée :
- Empêchez d’abord de nouvelles connexions :
tsg-policyconfig set /enabled:false
- Fermez les sessions existantes (
quser /server:<Gateway>
puislogoff
). - Redémarrez :
Restart-Service tsgateway, winmgmt
- Réactivez le rôle :
tsg-policyconfig set /enabled:true
Bonnes pratiques pour prévenir l’erreur
- Conserver
TEMP/TMP
sur un volume système NTFS offrant les droits Full Control à SYSTEM et NETWORK SERVICE. - Surveiller les mises à jour mensuelles corrigeant WMI et RD Gateway ; plusieurs cumulative updates ont résolu des fuites de handle et des échecs de compilation MOF.
- Mettre en place une tâche planifiée PowerShell qui purge les noms d’hôtes obsolètes dans toutes les RAP.
- Activer la collecte Diagnostic Data Viewer et exporter régulièrement les journaux HTTPERR pour détecter les erreurs 500 liées à la couche IIS de RD Gateway.
- Auditer périodiquement le namespace
root\cimv2\TerminalServices
pour s’assurer que les classesWin32_TSGateway*
n’ont pas perdu leurs ACL.
Tableau de correspondance des événements WMI utiles
ID d’événement | Source | Interprétation rapide |
---|---|---|
10 | WMI-Activity | Erreur de script ou accès refusé dans un provider. |
5858 | WMI-Activity | Processus WMI a échoué ; regarder Status et ClientProcessId . |
101 | TerminalServices-Gateway | Incapacité à charger les paramètres de stratégie. |
302/304 | TerminalServices-Gateway | Échec de création ou mise à jour d’objet WMI. |
FAQ
Q : Peut‑on déplacer TEMP/TMP
sur un volume D pour gagner de l’espace ?
R : Oui, mais uniquement si le volume est local, NTFS et que les services système disposent des mêmes ACL que sur C:\Windows\Temp. Conserver l’emplacement par défaut reste plus simple.
Q : L’erreur est‑elle liée à un antivirus ?
R : Certains moteurs verrouillent les scripts MOF lors de l’analyse en temps réel. Ajoutez %SystemRoot%\Temp
et %SystemRoot%\System32\wbem
aux exclusions.
Q : WMIDiag signale des « orphaned namespace » ; dois‑je les supprimer ?
R : Un namespace orphelin n’est pas bloquant tant qu’il n’entre pas en conflit. Supprimez‑le uniquement s’il est connu et documenté.
Scripts PowerShell prêts à l’emploi
Exporter toutes les variables d’environnement pertinentes
Get-ChildItem Env: | Where-Object { $_.Name -in 'TEMP','TMP','Path' } |
Sort-Object Name | Format-Table Name,Value -Auto
Vérifier que toutes les classes WMI Terminal Services sont saines
$bad = Get-WmiObject -Namespace 'root\cimv2\TerminalServices' -List |
ForEach-Object {
try { [void]($_.Name); $null }
catch { $_.Name }
}
if ($bad) { $bad | Out-File .\BadTSClasses.txt } else { 'Aucune anomalie détectée.' }
Purger automatiquement les hôtes inactifs des RAP
$raps = Get-WmiObject -Namespace 'root\cimv2\TerminalServices' -Class Win32_TSGatewayAuthorizationRule
foreach ($rap in $raps) {
$dirty = $false
foreach ($res in $rap.NetworkResourceNames) {
if (-not (Test-Connection $res -Count 1 -Quiet)) {
$rap.NetworkResourceNames = $rap.NetworkResourceNames | Where-Object { $_ -ne $res }
$dirty = $true
}
}
if ($dirty) { $rap.Put() }
}
Conclusion
Dans la majorité des cas, la restauration des variables TEMP/TMP
puis le nettoyage des entrées obsolètes suffisent à éliminer l’erreur « WMI failure: Unable to Update Resource Access Policy ». En combinant diagnostics WMI, bonnes pratiques de sécurité NTFS et maintenance régulière des stratégies, vous garantissez la pérennité de votre infrastructure RD Gateway et réduisez considérablement les interruptions de service.