Vos serveurs Windows Server 2012 R2 sont connectés à Azure Arc, toutes les conditions ESU sont en place… mais le portail n’affiche pas « ESU Enabled ». Ce guide fournit une démarche concrète et des scripts pour rétablir l’état « Enabled = 1 » et obtenir les mises à jour.
Problème d’affichage de la licence ESU pour Windows Server 2012 R2 dans Azure Arc
Vue d’ensemble
Un administrateur observe que ses serveurs Windows Server 2012 R2, bien que reliés à Azure Arc et ayant reçu tous les prérequis Extended Security Updates (ESU), n’apparaissent pas comme « ESU Enabled » dans le portail. La clé de Registre :
HKLM\SOFTWARE\Microsoft\Azure Connected Machine Agent\ArcESU\Enabled
reste à 0 et toute modification manuelle à 1 est immédiatement annulée par l’agent.
Réponse & solution de premier recours
Le forum a recommandé de republier la question sur Microsoft Q&A avec le tag Azure Arc, afin qu’un ingénieur spécialisé puisse analyser le cas précis (journalisation, télémétrie, comportement de l’extension). Néanmoins, avant d’escalader, ce guide propose un runbook complet pour résoudre l’anomalie dans la plupart des environnements.
Comment fonctionne l’activation ESU via Azure Arc (vue opérationnelle)
Comprendre ce qui pilote la valeur Enabled
aide à éviter les faux positifs et les corrections éphémères :
- Agent Azure Connected Machine (Windows Service « Azure Connected Machine Agent ») établit l’identité de la machine, maintient la connexion et orchestre les extensions.
- Extension ESU (Preview) s’installe via l’agent et évalue l’éligibilité ESU de la ressource Arc.
- Éligibilité/attribution est gérée côté Azure (portail/API/politiques). Quand la machine est marquée éligible, l’agent obtient un jeton ESU et écrit
Enabled=1
. Si l’éligibilité est retirée, l’agent réinitialise à0
. - Windows Update/WSUS détecte la présence de la licence ESU (via la clé susmentionnée et d’autres signaux) et rend disponibles les correctifs ESU.
Conclusion : la valeur de Registre n’est pas une bascule administrateur ; c’est un résultat piloté par l’éligibilité Arc et par l’extension ESU.
Checklist rapide (contrôles préliminaires)
- Agent Azure Connected Machine ≥ 1.36 et extension ESU (Preview) installée :
azcmagent extension get esu
. - Connectivité sortante TCP 443 vers
*.guestconfig.azure.com
et*.his.arc.azure.com
(proxys/TLS autorisés). - Horloge système synchronisée (NTP) : un décalage > 5 min invalide le jeton ESU.
- Attribution de licence réalisée dans le portail : Azure Arc → Servers → Azure Windows Server ESU → Manage Eligibility → cocher les machines cibles.
- Après attribution, attendre 5–15 min ou déclencher
azcmagent config apply
.
Élément | À vérifier | Commande/Emplacement | Résultat attendu |
---|---|---|---|
Connexion Arc | État & tenant | azcmagent show | Connected , Tenant ID correct |
Extension ESU | Présence & état | azcmagent extension get esu | Installed/Ready |
Réseau | Sortie 443 | Proxy/pare‑feu | Accès à *.guestconfig.azure.com et *.his.arc.azure.com |
Temps | Décalage | w32tm /query /status | Offset <= 300 s (idéalement < 30 s) |
Registre | Signal ESU | HKLM\...\ArcESU\Enabled | Passage à 1 si éligible |
Procédure pas à pas de diagnostic
1. Vérifier la connexion Arc et le tenant
azcmagent show
- Connected = true.
- Tenant ID : doit correspondre au tenant Azure où vous avez attribué la licence ESU.
- En cas d’incohérence tenant/région/abonnement, l’éligibilité ne s’applique pas.
2. Contrôler la version de l’agent et l’extension ESU
azcmagent check
azcmagent extension list
azcmagent extension get esu
Ciblez au minimum la version 1.36 de l’agent. Si l’extension ESU est absente ou NotReady, réinstallez‑la depuis le portail ou via CLI, puis poursuivez.
3. Confirmer l’attribution de la licence dans Azure
- Portail Azure : Arc → Servers → Azure Windows Server ESU → Manage Eligibility.
- Cochez la/les machine(s) cible(s) Windows Server 2012 R2 et validez.
- Patientez 5–15 min (ou passez à l’étape suivante pour un rafraîchissement immédiat).
4. Forcer un rafraîchissement de configuration
azcmagent config apply
Cette commande force l’agent à reconsommer l’état de conformité (y compris ESU) et met à jour le Registre si la machine est éligible.
5. Vérifier la connectivité réseau requise
Assurez la sortie TCP 443 vers les hôtes suivants :
*.guestconfig.azure.com
*.his.arc.azure.com
Exemples de tests :
Test-NetConnection guestconfig.azure.com -Port 443
Test-NetConnection his.arc.azure.com -Port 443
En environnement proxy, autorisez explicitement ces FQDN (inspection TLS désactivée si nécessaire).
6. Vérifier la synchronisation temporelle (NTP)
Un décalage d’horloge > 5 minutes invalide le jeton ESU.
w32tm /query /status
w32tm /query /source
Si nécessaire, resynchronisez :
net stop w32time
w32tm /config /syncfromflags:manual /manualpeerlist:"pool.ntp.org"
net start w32time
w32tm /resync
7. Lire les journaux côté machine
C:\ProgramData\AzureConnectedMachineAgent\Logs\GuestAgentExtension\*
C:\Windows\Temp\ArcEsu.*.log
- Journal d’événements : Applications and Services Logs → Microsoft → Windows → Guest Configuration.
Recherchez des erreurs de type eligibility not granted, token invalid, network/proxy, ou write lock.
8. Inspecter la valeur de Registre
Ne forcez pas la clé Enabled
: si elle revient à 0
, la machine n’est pas (ou plus) éligible côté Azure.
reg query "HKLM\SOFTWARE\Microsoft\Azure Connected Machine Agent\ArcESU" /v Enabled
9. Redémarrer l’agent (puis, si besoin, le serveur)
Dès que Enabled=1
, redémarrez le service pour que Windows détecte la licence :
sc stop himds
sc start himds
Si les mises à jour ESU ne s’affichent pas encore via Windows Update/WSUS, redémarrez la machine.
Causes fréquentes et remèdes concrets
Symptôme | Cause racine probable | Action corrective |
---|---|---|
Enabled repasse de 1 à 0 | Éligibilité non attribuée ou retirée | Réattribuer via Manage Eligibility, forcer azcmagent config apply |
Extension ESU absente | Déploiement incomplet/politiques non appliquées | Installer l’extension ESU (Preview), vérifier Azure Policy/initiative |
État portail ≠ état machine | Rafraîchissement non effectué | azcmagent config apply , attendre 5–15 min |
Erreurs « token invalid » | Décalage NTP > 5 min | Corriger l’horloge, w32tm /resync , relancer l’agent |
Échec réseau/proxy | Filtrage 443 ou inspection TLS | Ouvrir *.guestconfig.azure.com et *.his.arc.azure.com sans interception |
Machine connectée au mauvais tenant | Onboarding dans un autre tenant/abonnement | Vérifier azcmagent show , réinscrire au bon tenant si besoin |
Écriture Refusée | Resource lock (Write) sur la ressource Arc | Lever le verrou d’écriture, réappliquer la licence |
Mises à jour ESU invisibles | Canal de mise à jour incorrect (WU/WSUS) | Vérifier produit/classifications WSUS, ou Windows Update Internet autorisé |
Exemples de commandes utiles
Agent & extension
azcmagent show
azcmagent check
azcmagent extension list
azcmagent extension get esu
azcmagent config apply
Réseau
Test-NetConnection guestconfig.azure.com -Port 443
Test-NetConnection his.arc.azure.com -Port 443
netsh winhttp show proxy
Temps
w32tm /query /status
w32tm /query /source
w32tm /resync
Registre
reg query "HKLM\SOFTWARE\Microsoft\Azure Connected Machine Agent\ArcESU" /v Enabled
Services & journaux
sc queryex type= service state= all | findstr /i "azure guest himds"
wevtutil qe Microsoft-Windows-GuestConfiguration/Operational /f:text /q:"*[System[(Level=2)]]"
Automatiser l’audit à grande échelle (PowerShell)
Le script ci‑dessous interroge localement (ou via PSRemoting) l’état clé pour un lot de serveurs 2012 R2 et produit un rapport CSV :
$Servers = Get-Content .\servers-2012r2.txt
$results = foreach ($s in $Servers) {
try {
$reg = Invoke-Command -ComputerName $s -ScriptBlock {
$path = 'HKLM:\SOFTWARE\Microsoft\Azure Connected Machine Agent\ArcESU'
$enabled = (Get-ItemProperty -Path $path -Name Enabled -ErrorAction Stop).Enabled
$conn = (& azcmagent show 2>$null | Out-String)
$connected = $conn -match 'Connected\s*:\s*true'
$tenant = ($conn | Select-String -Pattern 'Tenant Id\s*:\s*(.+)').Matches.Value
[pscustomobject]@{
ComputerName = $env:COMPUTERNAME
Enabled = $enabled
Connected = $connected
Tenant = $tenant
}
} -ErrorAction Stop
$reg
} catch {
[pscustomobject]@{
ComputerName = $s; Enabled = 'N/A'; Connected = 'N/A'; Tenant = 'N/A'
}
}
}
$results | Export-Csv .\ArcESU-Status-2012R2.csv -NoTypeInformation -Encoding UTF8
Write-Host "Rapport: ArcESU-Status-2012R2.csv"
Ajoutez selon vos besoins un test réseau (Test-NetConnection
), un contrôle NTP (w32tm
) et l’état de l’extension (azcmagent extension get esu
).
Bonnes pratiques (opérations & gouvernance)
- Standardisez les proxys : excluez explicitement les domaines ESU Arc du déchiffrement TLS.
- Surveillez l’horloge : alertez si l’offset NTP dépasse 60 secondes.
- Verrouillez les versions d’agent : maintenez une base ≥ 1.36.
- Automatisez l’attribution ESU via Azure Policy/initiative dédiée plutôt que manuellement.
- Évitez de modifier le Registre à la main : l’agent réécrit la valeur selon l’éligibilité serveur‑côté.
- Documentez le tenant et l’abonnement d’onboarding Arc pour éviter les confusions d’éligibilité.
- Surveillez les verrous (resource locks) sur la ressource Arc qui pourraient empêcher l’écriture d’état.
Étude de cas : clé qui revient à 0 après 2–3 minutes
Contexte : extension ESU installée, serveur Connected, proxy HTTPS en inspection TLS. Après avoir forcé Enabled=1
(manuellement), la valeur retombe à 0.
Diagnostic : les logs montrent un échec de validation du jeton (« invalid signature »). L’inspection TLS altérait le flux vers *.his.arc.azure.com
.
Remède : ajout d’une exception d’inspection pour les deux FQDN Arc, azcmagent config apply
, et Enabled
passe automatiquement à 1 dans les 10 minutes.
Validation finale (quand tout est au vert)
azcmagent show
→ Connected: true.azcmagent extension get esu
→ Installed/Ready.- Portail Azure → ESU Enabled sur la ressource.
- Registre →
Enabled=1
. - Redémarrage du service « Azure Connected Machine Agent » (ou du serveur).
- Windows Update/WSUS → correctifs ESU proposés et applicables.
Quand escalader vers le support spécialisé
Si, malgré tout, le portail n’affiche pas « ESU Enabled » ou que Enabled
rebascule à 0 :
- Publiez votre cas sur Microsoft Q&A avec le tag Azure Arc.
- Joignez : sortie
azcmagent show
, état de l’extension (get esu
), journaux compressés (GuestAgentExtension
etArcEsu.*.log
), captures de configuration proxy/NTP, tenant ID et abonnement. - Précisez si des resource locks sont en place sur la ressource Arc.
FAQ
Q : Puis‑je « forcer » la clé Enabled
à 1 pour débloquer ESU ?
R : Non. L’agent réappliquera l’état réel. Il faut rendre la ressource éligible (portail/Policy) et corriger les prérequis (réseau/NTP/extension).
Q : Combien de temps après l’attribution la clé passe‑t‑elle à 1 ?
R : En général 5–15 minutes. Utilisez azcmagent config apply
pour accélérer.
Q : L’extension ESU doit‑elle être Preview ?
R : Suivez l’état recommandé dans votre portail. Si votre environnement affiche « ESU (Preview) », installez ce composant et maintenez‑le à jour.
Q : WSUS est‑il compatible avec ESU via Arc ?
R : Oui, si les produits/classifications adéquats sont cochés. Sinon, Windows Update (Internet) peut être utilisé.
Q : Un changement d’abonnement/tenant après l’onboarding peut‑il casser ESU ?
R : Oui. Vérifiez Tenant ID
via azcmagent show
et réalignez l’éligibilité dans le bon scope.
Q : Les mises à jour ESU n’apparaissent pas alors que Enabled=1
.
R : Redémarrez le service agent (ou la machine), synchronisez Windows Update, et contrôlez WSUS.
Q : Comment confirmer côté machine que l’éligibilité est reconnue ?
R : Outre le Registre, les logs ArcEsu.*.log
montrent l’obtention du jeton et l’écriture de l’état.
Q : Les verrous de ressource Azure peuvent‑ils bloquer la bascule ?
R : Oui, un write lock empêche parfois l’agent d’écrire l’état d’éligibilité ; levez le verrou, réappliquez.
Conclusion
Dans Azure Arc, la clé Enabled
reflète l’éligibilité effective et non une préférence locale. En appliquant cette démarche — contrôle de la version de l’agent, installation de l’extension ESU, attribution de licence dans le bon tenant, réseau et NTP corrects, examen des logs puis redémarrage du service — vous résolvez la majorité des anomalies d’affichage « ESU Enabled ». Si le problème persiste, l’escalade vers le canal de support ad hoc (Microsoft Q&A, tag Azure Arc) avec les éléments de preuve cités permettra un diagnostic avancé.
Annexe : feuille de route express
- Vérifier :
azcmagent show
→ Connected & tenant correct. - Confirmer : agent ≥ 1.36 et extension ESU installée.
- Attribuer : portail → Manage Eligibility.
- Forcer :
azcmagent config apply
. - Réseau/NTP : tester 443 et
w32tm
. - Logs : analyser
GuestAgentExtension
&ArcEsu.*.log
. - Registre :
Enabled
doit passer à 1. - Redémarrer service/serveur, puis patcher via WU/WSUS.
Annexe : messages types à rechercher dans les logs
[ArcEsu] Eligibility status: Granted
[ArcEsu] Token acquired. Expires: 2025-10-31T23:59:59Z
[ArcEsu] Registry set HKLM\...\ArcESU\Enabled=1
[ArcEsu] ERROR: time skew exceeds threshold (NTP drift)
[ArcEsu] ERROR: endpoint *.his.arc.azure.com not reachable
[ArcEsu] INFO: license revoked by server-side policy
Annexe : matrice d’actions pour équipes Ops
Équipe | Responsabilité clé | Indicateurs à suivre | Seuil d’alerte |
---|---|---|---|
Sécurité réseau | Ouverture 443 vers FQDN Arc | Taux d’échec TLS/HTTP | > 1% sur 24 h |
Infra Windows | NTP, agent & extension | Offset moyen, version agent | Offset > 60 s, agent < 1.36 |
Cloud/Plateforme | Attribution ESU & Policy | Taux de non‑éligibles | > 2% des serveurs Arc |
Patch management | WSUS/WU configuration | Compliance ESU mensuelle | < 95% à J+7 |
Ce guide regroupe l’essentiel des étapes de diagnostic et d’activation ESU via Azure Arc, en complément de la redirection vers le support spécialisé lorsque nécessaire.