Problema

En entornos donde se usa Group Policy (GPO) para automatizar el onboarding de Azure Arc, es frecuente ver que la tarea programada finaliza con el estado Task Completed y, sin errores visibles en los logs, los servidores simplemente no aparecen en el portal de Azure. El cliente percibe que la instalación “se ejecutó” porque la tarea desaparece y los archivos de configuración (por ejemplo ArcInfo.json) se generan, pero la máquina sigue fuera del alcance de Azure Arc, Defender for Cloud y cualquier política basada en la nube.

Este patrón se repite en varios nodos Windows Server 2022 y, a menudo, pasa desapercibido porque los indicadores habituales (eventos, logs de Azure Arc) no reportan fallos. El síntoma más claro es la ausencia del recurso en Azure pese a que el proceso de GPO parece haber concluido sin problemas.

Causa

1. Feature AzureArcSetup pre‑instalada pero incompleta

En Windows Server 2022 la característica AzureArcSetup puede estar presente por defecto (por ejemplo, tras una actualización de Windows). Cuando la característica está marcada como present pero no está configurada, el instalador que GPO ejecuta detecta la presencia del feature y asume que ya está listo, por lo que omite la fase de registro del agente. El resultado es una “instalación” que solo crea archivos temporales y marca la tarea como completada.

2. Conflicto de versiones del instalador

El instalador de Azure Arc que se distribuye vía GPO suele ser la versión más reciente disponible en el paquete de Microsoft. Si el servidor ya tiene una versión anterior del agente (o una versión parcial) el instalador intenta una actualización que falla silenciosamente porque la lógica de actualización está bloqueada por la feature existente.

3. Política de ejecución restringida

Algunos entornos aplican ExecutionPolicy o AppLocker que impiden la ejecución de scripts de PowerShell firmados por Microsoft cuando la feature está en estado “deshabilitado”. La tarea de GPO registra la finalización del script, pero el binario del agente nunca se copia en la ruta esperada.

4. Falta de reinicio después de cambios de feature

Incluso cuando la feature se elimina correctamente, el sistema necesita un reinicio para que el estado del componente se libere. Si el servidor no se reinicia, el instalador de GPO sigue viendo la feature como presente y aborta la instalación.

Solución

La estrategia consiste en normalizar el estado de la feature AzureArcSetup antes de que GPO intente el onboarding. El proceso se puede automatizar con PowerShell y aplicarse a cualquier número de servidores, independientemente de cómo se haya distribuido inicialmente el paquete.

Paso 1 – Detectar la presencia de la feature

Get-WindowsFeature -Name AzureArcSetup

Si el resultado muestra Installed, procede al siguiente paso.

Paso 2 – Desinstalar la feature de forma limpia

Remove-WindowsFeature -Name AzureArcSetup -Restart:$false

El parámetro -Restart:$false evita que el servidor se reinicie automáticamente; el reinicio se controla en el paso siguiente.

Paso 3 – Reiniciar el servidor

Restart-Computer -Force

Un reinicio forzado garantiza que el estado de la feature se libere por completo. En entornos con alta disponibilidad, programa el reinicio fuera de la ventana de producción o usa -Delay para sincronizar con otras tareas.

Paso 4 – Dejar que GPO vuelva a procesarse

Una vez el servidor vuelve a estar en línea, el cliente de política de grupo (gpupdate) se ejecutará en el siguiente ciclo (normalmente cada 90 min) o se puede forzar manualmente:

gpupdate /force

El instalador de Azure Arc incluido en la GPO detectará que la feature ya no está presente y procederá con la instalación completa, registro del agente y creación del recurso en Azure.

Alternativa: Re‑instalar sobre la feature existente

Si no es posible eliminar la feature (por ejemplo, por dependencias de otro producto), se puede forzar la reinstalación del agente usando el instalador offline con la opción --force:

.\AzureArcAgentSetup.exe /install /force

Esta variante ignora la detección de la feature y escribe los archivos de registro necesarios, aunque sigue siendo menos fiable que la eliminación previa.

Cuándo aplicar esta solución

  • Síntomas: Tarea GPO “Task Completed” sin errores, ArcInfo.json presente, pero el servidor no aparece en Azure Arc; logs de Azure Arc sin eventos de registro.
  • Entorno: Windows Server 2022 (o versiones que incluyan la feature AzureArcSetup), despliegue mediante GPO, uso de Azure Arc para gestión de máquinas on‑premise.
  • Exclusiones: Si la instalación se realiza mediante script manual o mediante Azure CLI/PowerShell directamente, la causa típica no es la feature preinstalada y la solución anterior no aplica.
  • Precauciones: Verificar que la eliminación de AzureArcSetup no rompa dependencias de otros productos (por ejemplo, Azure Monitor o Azure Security Center instalados previamente). En caso de duda, pruebe primero en un servidor de pruebas.

Código

# Detectar feature
Get-WindowsFeature -Name AzureArcSetup

# Eliminar feature (sin reinicio automático)
Remove-WindowsFeature -Name AzureArcSetup -Restart:$false

# Reiniciar servidor
Restart-Computer -Force

# Forzar procesamiento de GPO
gpupdate /force

Verificación

  1. Estado de la feature después del reinicio

    Get-WindowsFeature -Name AzureArcSetup
    

    Debe devolver Removed.

  2. Revisión de logs de Azure Arc

    • C:\ProgramData\AzureArc\Agent\Logs\AzureArcAgent.log debe contener una entrada Agent registration succeeded.
    • En el Visor de eventos, bajo Applications and Services Logs → AzureArc, busca eventos con ID 1000 (registro exitoso).
  3. Portal de Azure

    • Navega a Azure Arc → Servers y confirma que el nombre del host aparece.
    • Verifica que la máquina muestra estado “Connected” y que las extensiones (monitoring, Defender) están activas.
  4. Política de grupo

    • Ejecuta gpresult /h gpresult.html y revisa que la GPO de Azure Arc está aplicada sin errores.

Notas adicionales

  • Automatización a gran escala: combina los comandos anteriores en un script de PowerShell que recorra una lista de servidores (por ejemplo, usando Invoke-Command). Añade lógica de registro para capturar servidores que no pudieron reiniciarse.
  • Ventanas de mantenimiento: programa el reinicio mediante ScheduledTask para evitar interrupciones inesperadas.
  • Versionado del agente: mantén una carpeta compartida con la última versión del instalador y referencia esa ruta en la GPO. Así evitas que una versión antigua quede “atascada” en los servidores.
  • Monitor de cumplimiento: crea una regla de Azure Policy que marque como no conformes los servidores que aparecen en la lista de GPO pero no están registrados en Azure Arc. Esto ayuda a detectar rápidamente nuevas incidencias.

Con este enfoque, los fallos silenciosos dejan de ser un misterio y se convierten en un paso verificable dentro del proceso de onboarding de Azure Arc.