Azure Arc : corriger l’affichage de la licence ESU pour Windows Server 2012 R2 (Enabled=0 qui se réinitialise)

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.

Sommaire

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 :

  1. Agent Azure Connected Machine (Windows Service « Azure Connected Machine Agent ») établit l’identité de la machine, maintient la connexion et orchestre les extensions.
  2. Extension ESU (Preview) s’installe via l’agent et évalue l’éligibilité ESU de la ressource Arc.
  3. É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.
  4. 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érifierCommande/EmplacementRésultat attendu
Connexion ArcÉtat & tenantazcmagent showConnected, Tenant ID correct
Extension ESUPrésence & étatazcmagent extension get esuInstalled/Ready
RéseauSortie 443Proxy/pare‑feuAccès à *.guestconfig.azure.com et *.his.arc.azure.com
TempsDécalagew32tm /query /statusOffset <= 300 s (idéalement < 30 s)
RegistreSignal ESUHKLM\...\ArcESU\EnabledPassage à 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

  1. Portail Azure : Arc → Servers → Azure Windows Server ESU → Manage Eligibility.
  2. Cochez la/les machine(s) cible(s) Windows Server 2012 R2 et validez.
  3. 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ômeCause racine probableAction corrective
Enabled repasse de 1 à 0Éligibilité non attribuée ou retiréeRéattribuer via Manage Eligibility, forcer azcmagent config apply
Extension ESU absenteDéploiement incomplet/politiques non appliquéesInstaller l’extension ESU (Preview), vérifier Azure Policy/initiative
État portail ≠ état machineRafraîchissement non effectuéazcmagent config apply, attendre 5–15 min
Erreurs « token invalid »Décalage NTP > 5 minCorriger l’horloge, w32tm /resync, relancer l’agent
Échec réseau/proxyFiltrage 443 ou inspection TLSOuvrir *.guestconfig.azure.com et *.his.arc.azure.com sans interception
Machine connectée au mauvais tenantOnboarding dans un autre tenant/abonnementVérifier azcmagent show, réinscrire au bon tenant si besoin
Écriture RefuséeResource lock (Write) sur la ressource ArcLever le verrou d’écriture, réappliquer la licence
Mises à jour ESU invisiblesCanal 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)

  1. azcmagent showConnected: true.
  2. azcmagent extension get esuInstalled/Ready.
  3. Portail Azure → ESU Enabled sur la ressource.
  4. Registre → Enabled=1.
  5. Redémarrage du service « Azure Connected Machine Agent » (ou du serveur).
  6. 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 et ArcEsu.*.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

  1. Vérifier : azcmagent showConnected & tenant correct.
  2. Confirmer : agent ≥ 1.36 et extension ESU installée.
  3. Attribuer : portail → Manage Eligibility.
  4. Forcer : azcmagent config apply.
  5. Réseau/NTP : tester 443 et w32tm.
  6. Logs : analyser GuestAgentExtension & ArcEsu.*.log.
  7. Registre : Enabled doit passer à 1.
  8. 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

ÉquipeResponsabilité cléIndicateurs à suivreSeuil d’alerte
Sécurité réseauOuverture 443 vers FQDN ArcTaux d’échec TLS/HTTP> 1% sur 24 h
Infra WindowsNTP, agent & extensionOffset moyen, version agentOffset > 60 s, agent < 1.36
Cloud/PlateformeAttribution ESU & PolicyTaux de non‑éligibles> 2% des serveurs Arc
Patch managementWSUS/WU configurationCompliance 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.

Sommaire