Windows Server 2012 R2: ESU no se refleja en Azure Arc (registro Enabled=0) — causa y solución completa

Si en Windows Server 2012 R2 el valor HKLM\SOFTWARE\Microsoft\Azure Connected Machine Agent\ArcESU\Enabled permanece en 0 (o vuelve a 0) pese a tener prerrequisitos instalados, esta guía explica por qué sucede y cómo corregirlo paso a paso sin trucos de registro.

Índice

Resumen en una frase

El agente de Azure Arc calcula y establece ArcESU\Enabled según la elegibilidad real del servidor (licencia ESU vinculada + conectividad + prerrequisitos); si algo no cumple, siempre lo forzará a 0 aunque lo cambies manualmente.

Qué significa realmente ArcESU\Enabled

La clave de registro HKLM\SOFTWARE\Microsoft\Azure Connected Machine Agent\ArcESU\Enabled es un reflejo del estado de licenciamiento ESU del equipo según la evaluación del agente de Azure Arc. No es un interruptor que puedas forzar:

  • Enabled = 1: el agente ha validado criptográficamente una licencia ESU activa para ese equipo y detecta prerrequisitos y conectividad adecuados. El equipo es elegible para recibir parches ESU.
  • Enabled = 0: falta la licencia, hay problemas de conectividad/validación, los prerrequisitos no están completos o la edición/entorno no es compatible.

Internamente, el agente sincroniza este valor con un documento de licencia (por ejemplo, %ProgramData%\AzureConnectedMachineAgent\Certs\license.json) y con las comprobaciones de elegibilidad. Por eso, cuando lo cambias a mano a 1, vuelve a 0.

Solución recomendada (orden lógico)

A continuación, un flujo de trabajo probado de menor a mayor impacto. Síguelo en orden y valida después de cada paso.

Verificar conexión y versión del agente

  1. Confirma que el servidor aparece como Connected en Azure Arc y que reporta estado saludable.
  2. Comprueba la versión del Azure Connected Machine agent. Se recomienda 1.34 o superior para ESU en Windows Server 2012/2012 R2.
# Ejecuta en PowerShell (administrador)
azcmagent version
azcmagent show
azcmagent check
Get-Service himds

Si el servicio himds no está en ejecución, inícialo y revisa los logs del agente en %ProgramData%\AzureConnectedMachineAgent\Log\ (por ejemplo, himds.log).

Crear y vincular la licencia ESU en Azure

Que el sistema tenga los prerrequisitos no basta: debes crear la licencia ESU y vincularla explícitamente al recurso Arc del servidor.

  • En el portal de Azure, crea una Windows Server ESU license con la edición y el recuento de núcleos correctos.
  • Desde la licencia, vincula los recursos Arc elegibles (Eligible resources → Enable ESUs).
  • Para habilitar a escala, usa las built-in policies de Azure Policy para ESU.

Sin esta vinculación, el agente mantendrá Enabled = 0.

Instalar los prerrequisitos en Windows Server 2012/2012 R2

En 2012/2012 R2 es necesario instalar el paquete de licenciamiento y la SSU especificados en la documentación de ESU posterior al fin de soporte (KB5031043 menciona el procedimiento). Tras aplicar los prerrequisitos, reinicia el servidor.

# Validar que el KB clave está presente (ejemplo)
Get-HotFix -Id KB5031043 -ErrorAction SilentlyContinue

Revisar las últimas SSU/LCU instaladas

Get-HotFix | Sort-Object InstalledOn -Descending | Select-Object -First 10 

Comprobar conectividad y certificados

El agente debe poder salir a Internet para validar la licencia y comunicarse con los servicios de Arc y de Guest Configuration. Verifica si tu proxy/firewall permite la salida 80/443 a los endpoints de Arc y la obtención de certificados intermedios necesarios (Azure RSA TLS). En redes muy cerradas, instala manualmente los certificados intermedios requeridos.

ComponenteNecesidad principalNotas
Azure Arc (HIMDS)Salida TCP 443 a <región>.his.arc.azure.comUsa azcmagent check para diagnosticar.
Guest ConfigurationSalida TCP 443 a *.guestconfiguration.azure.comValidación de políticas y estado.
Validación ESUAcceso a www.microsoft.com/pkiops/certs (80/443)O instalar manualmente los intermedios Azure RSA TLS si no hay salida.
# Pruebas rápidas (reemplaza &lt;region&gt; por tu región, ej. eastus)
Test-NetConnection eastus.his.arc.azure.com -Port 443
Test-NetConnection guestconfiguration.azure.com -Port 443

Forzar una nueva validación de licencia en el agente

Si actualizaste el agente o cambiaste la vinculación, fuerza la reevaluación borrando el artefacto local y reiniciando el servicio:

# PowerShell con permisos elevados
Remove-Item "$env:ProgramData\AzureConnectedMachineAgent\Certs\license.json" -Force -ErrorAction SilentlyContinue
Restart-Service himds
Start-Sleep -Seconds 30
reg query "HKLM\SOFTWARE\Microsoft\Azure Connected Machine Agent\ArcESU" /v Enabled

Confirmar compatibilidad del sistema

  • ESU por Arc aplica a Windows Server 2012/2012 R2 Standard y Datacenter.
  • No aplica a ediciones de Storage.
  • Las VM en Azure o Azure VMware Solution usan beneficios ESU distintos; no deben inscribirse mediante Arc ESU.

Comprobar proveedores de recursos y políticas en la suscripción

  • Confirma que Microsoft.HybridCompute y Microsoft.GuestConfiguration están registrados.
  • Revisa que no exista una política con efecto Deny que bloquee la creación o modificación de licencias ESU.

Validar estado desde el propio servidor

  • Registro: Enabled = 1 indica licencia válida; 0 indica no habilitado.
  • Archivo de licencia: verifica la presencia de C:\ProgramData\AzureConnectedMachineAgent\Certs\license.json.
  • Logs: revisa %ProgramData%\AzureConnectedMachineAgent\Log\ para mensajes de license, certificate o policy.

Checklist express (para cuando el tiempo apremia)

  1. El servidor aparece Connected en Arc y azcmagent version ≥ 1.34.
  2. La licencia ESU existe y está vinculada al recurso Arc correcto.
  3. Prerrequisitos instalados (paquete de licenciamiento + SSU, por ejemplo, KB5031043).
  4. Conectividad 443 a <región>.his.arc.azure.com y *.guestconfiguration.azure.com; certificados intermedios válidos.
  5. Se forzó reevaluación (Remove-Item license.json + Restart-Service himds).
  6. Edición/entorno compatible (no Storage, no VM de Azure/AVS).
  7. Resource providers registrados y políticas sin Deny.

Tabla de síntomas ⇄ causas ⇄ acciones

SíntomaCausa más probableAcción recomendada
Enabled permanece en 0La licencia ESU no está vinculada o caducóCrear/vincular licencia ESU al recurso Arc y refrescar validación
Enabled cambia a 1 y vuelve a 0Conectividad inestable o validación TLS fallidaCorregir proxy/firewall y cadena de certificados; probar con azcmagent check
Arc muestra DisconnectedServicio himds detenido o credenciales rotasIniciar himds, revisar logs y re-connect si procede
Prerrequisitos instalados pero sin ESUFalta SSU/paquete específico o requiere reinicioVerificar KB requeridos (p. ej., KB5031043) y reiniciar
Servidor elegible en portal pero registro en 0El agente no ha refrescado licenciaBorrar license.json y reiniciar himds
Servidor con edición StorageNo soportado por ESU via ArcPlan alternativo (actualización/migración)

Diagnóstico en profundidad

Rutas y elementos clave

ElementoRuta / UbicaciónPropósito
Registro ESUHKLM\SOFTWARE\Microsoft\Azure Connected Machine Agent\ArcESU\EnabledEstado de elegibilidad según el agente
Archivo de licencia%ProgramData%\AzureConnectedMachineAgent\Certs\license.jsonToken/licencia firmada para ESU
Servicio del agentehimds (Azure Hybrid Instance Metadata Service)Motor del agente de Azure Arc
Binario CLIC:\Program Files\AzureConnectedMachineAgent\azcmagent.exeComandos de comprobación y estado
Logs del agente%ProgramData%\AzureConnectedMachineAgent\Log\Eventos de conexión, TLS y licencias

Pruebas con PowerShell para tu caja de herramientas

# 1) Información general de Arc
$arcInfo = azcmagent show | Out-String
$arcInfo

2) Versión del agente

\$arcVersion = azcmagent version
"Agent version: \$arcVersion"

3) Estado del servicio HIMDS

Get-Service himds | Format-List \*

4) Validación básica de ESU

\$esuReg = Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Azure Connected Machine Agent\ArcESU" -ErrorAction SilentlyContinue
\$licensePath = Join-Path \$env\:ProgramData "AzureConnectedMachineAgent\Certs\license.json"
\[PSCustomObject]@{
RegEnabled   = \$esuReg.Enabled
LicenseJson  = Test-Path \$licensePath
LicensePath  = \$licensePath
}

5) Prerrequisitos (ejemplo de KB)

Get-HotFix -Id KB5031043 -ErrorAction SilentlyContinue

6) Conectividad (ajusta la región)

Test-NetConnection eastus.his.arc.azure.com -Port 443
Test-NetConnection guestconfiguration.azure.com -Port 443 

Script de diagnóstico y autoreparación

Este script agrupa comprobaciones y, si lo autorizas (-Repair), fuerza la reevaluación de la licencia:

function Test-ArcEsuEligibility {
    [CmdletBinding()]
    param(
        [switch]$Repair
    )
    $result = [ordered]@{}
    try {
        $result.AgentVersion = (azcmagent version) 2>&1
    } catch {
        $result.AgentVersion = "No se pudo obtener versión (¿agente instalado?)"
    }
    try {
        $result.AgentShow = (azcmagent show | Out-String)
    } catch {
        $result.AgentShow = "No disponible"
    }
    $svc = Get-Service -Name himds -ErrorAction SilentlyContinue
    $result.HimdsStatus = if ($svc) { $svc.Status } else { "No existe el servicio himds" }```
$regPath = "HKLM:\SOFTWARE\Microsoft\Azure Connected Machine Agent\ArcESU"
$reg = Get-ItemProperty -Path $regPath -ErrorAction SilentlyContinue
$result.ArcEsuEnabled = if ($reg) { $reg.Enabled } else { "Clave no encontrada" }

$licensePath = Join-Path $env:ProgramData "AzureConnectedMachineAgent\Certs\license.json"
$result.LicenseJsonExists = Test-Path $licensePath

$kb = Get-HotFix -Id KB5031043 -ErrorAction SilentlyContinue
$result.KB5031043 = if ($kb) { "Instalado: $($kb.InstalledOn)" } else { "No encontrado" }

if ($Repair) {
    if (Test-Path $licensePath) {
        Remove-Item $licensePath -Force -ErrorAction SilentlyContinue
        $result.RepairLicenseJson = "license.json eliminado"
    } else {
        $result.RepairLicenseJson = "license.json no estaba presente"
    }
    if ($svc) {
        Restart-Service himds -ErrorAction SilentlyContinue
        Start-Sleep -Seconds 20
        $result.HimdsAfterRestart = (Get-Service himds).Status
    }
    $reg2 = Get-ItemProperty -Path $regPath -ErrorAction SilentlyContinue
    $result.ArcEsuEnabledAfter = if ($reg2) { $reg2.Enabled } else { "Clave no encontrada" }
}
return [PSCustomObject]$result
```
}

Uso:

Solo diagnóstico

Test-ArcEsuEligibility

Diagnóstico + forzar reevaluación

Test-ArcEsuEligibility -Repair 

Buenas prácticas y advertencias

  • No edites manualmente ArcESU\Enabled: el agente lo sincroniza y revertirá cualquier cambio local.
  • Versiona el agente en tus imágenes/plantillas. Mantenerse en una versión antigua suele ser la causa oculta de muchas incidencias ESU.
  • Etiqueta correctamente los recursos Arc en Azure (por ejemplo, edición y recuento de núcleos) para evitar vincular licencias incorrectas.
  • Automatiza la habilitación con Azure Policy/Blueprints y revisiones periódicas de cumplimiento.
  • Audita los cambios de red/proxy: un cambio en TLS/inspección puede romper la validación de licencias.

Comprobaciones posteriores: ¿estoy recibiendo ESU?

Una vez que Enabled = 1, el equipo es elegible para recibir actualizaciones ESU. Puedes distribuir parches mediante tu herramienta habitual (Azure Update Manager, WSUS, ConfigMgr o un motor de parches de terceros). Valida que las LCU/SEC más recientes para 2012/2012 R2 se instalan correctamente.

# Historial de actualización (quick & dirty)
Get-HotFix | Where-Object { $_.Description -like "Security Update" } |
  Sort-Object InstalledOn -Descending |
  Select-Object -First 15

Verificar una KB específica de un mes concreto (ejemplo)

Get-HotFix -Id KB\ -ErrorAction SilentlyContinue 

Preguntas frecuentes

¿Puedo “forzar” Enabled = 1 desde el registro?
No. El agente valida la elegibilidad en cada ciclo y volverá a escribir el valor conforme a la realidad (licencia + conectividad + prerrequisitos).

El portal dice “Eligible” pero el registro sigue en 0.
Fuerza la reevaluación (license.json + reinicio de himds). Si persiste, revisa conectividad TLS/PKI y que el recurso Arc vinculado corresponda exactamente a ese servidor (idempotencia en entornos clonados).

Instalé KB5031043 y reinicié, pero nada cambia.
Asegúrate de que la licencia ESU esté realmente creada y vinculada. Sin licencia activa, no se moverá a 1.

Es una VM en Azure/AVS.
Esos entornos usan beneficios ESU distintos; no habilites ESU de 2012/2012 R2 mediante Arc para esas máquinas.

Estoy detrás de un proxy con inspección TLS.
Asegúrate de excluir del descifrado los endpoints de Arc y de contar con la cadena de confianza correcta; de lo contrario, la validación fallará y el valor volverá a 0.


Plantilla de runbook de recuperación

  1. Ver azcmagent version ≥ 1.34 y himds en Running.
  2. Confirmar licencia ESU creada y vinculada al recurso Arc correcto (edición y núcleos correctos).
  3. Instalar paquete de licenciamiento + SSU conforme a KB y reiniciar.
  4. Validar conectividad 443 a servicios de Arc/Guest Configuration y disponibilidad de certificados intermedios.
  5. Eliminar license.json y reiniciar himds.
  6. Verificar Enabled = 1 y distribuir actualizaciones con tu gestor de parches.

Casos especiales y matices

  • Servidores clonados: si clonaste una VM conectada a Arc, puede haber colisiones de identidad. Re-connect o regenera la identidad del agente antes de vincular ESU.
  • Cambio de nombre de host o dominio: no afecta al valor si la identidad Arc permanece estable, pero planifica una revalidación.
  • Ediciones Core: ESU cuenta por núcleos; sincroniza inventario/contabilidad para evitar underlicensing.
  • Ambientes sin Internet: requieren gestión manual de certificados y posibles excepciones de proxy; documenta el procedimiento interno para auditoría.

Conclusión

Cuando ArcESU\Enabled se resiste y permanece en 0, no es un problema de registro, sino de elegibilidad real. Al alinear los cuatro pilares —agente actualizado y conectado, licencia ESU correctamente vinculada, prerrequisitos en el SO y conectividad/PKI válidas— el valor cambia a 1 de forma sostenible y el servidor vuelve a recibir parches de seguridad extendidos.


Anexo: lista de verificación imprimible

ÍtemEstadoNotas
Agente Arc ≥ 1.34[ ]azcmagent version
Estado Connected[ ]azcmagent show
Licencia ESU creada[ ]Edición/núcleos correctos
Licencia ESU vinculada al recurso Arc[ ]Recurso correcto
Prerrequisitos (KB/SSU) instalados[ ]Incluye KB5031043
Conectividad a endpoints Arc/GC[ ]443 permitido; proxy OK
Certificados intermedios válidos[ ]Azure RSA TLS
Revalidación forzada realizada[ ]Eliminar license.json + reinicio himds
ArcESU\Enabled = 1[ ]Listo para recibir ESU

Créditos rápidos

Este artículo condensa prácticas de campo y la semántica operativa del agente de Azure Arc para ESU en Windows Server 2012/2012 R2, incluyendo la interpretación de ArcESU\Enabled, el rol de license.json, la vinculación de licencias y la verificación de conectividad/certificados, además de un enfoque de resolución por etapas y un set de scripts reutilizables.

Índice