Pocas tareas son tan críticas para un administrador como garantizar que cada equipo reciba el agente de seguridad correcto. Después de distribuir Genian NAC mediante GPO, es vital saber con precisión qué instalaciones fueron exitosas y cuáles fallaron para corregirlas sin pérdida de tiempo.
Contexto y objetivos
Genian NAC proporciona visibilidad en tiempo real, control de acceso basado en políticas y protección de dispositivos. Al desplegarlo por Directiva de Grupo, la escala deja de ser un problema, pero aparecen nuevos retos: herencias complejas, dependencias de red, permisos del recurso compartido o simples apagados de equipo en el momento equivocado. Este artículo aborda un método completo para crear un inventario fiable de instalaciones exitosas y fallidas, y muestra cómo remediar los casos problemáticos sin reinstalar de forma masiva.
Requisitos previos y preparación
- Acceso administrativo a un Domain Controller con la Consola de Administración de Directivas de Grupo (GPMC).
- Permisos para leer los registros de eventos de los equipos destino.
- Ruta UNC permanente y accesible para el paquete
GenianNAC.msi
. - Una estación de trabajo con PowerShell 5.1+ (o PowerShell 7 si se prefiere) y el módulo
ActiveDirectory
instalado.
Revisión de la directiva con GPMC
Antes de buscar culpables, verifica que la GPO esté configurada de forma óptima:
- Abre gpmc.msc y navega hasta la GPO que distribuye Genian NAC.
- En el panel derecho, expande Configuración de Software ▸ Instalación de Software y asegúrate de que:
- El paquete MSI apunta a una ruta UNC (
\\Servidor\Share\GenianNAC.msi
), no a una ruta local. - La casilla Eliminar la configuración de instalación al eliminar la GPO está desmarcada (evita desinstalaciones inesperadas).
- No hay advertencias amarillas ni iconos rojos.
- El paquete MSI apunta a una ruta UNC (
- Confirma que la GPO está vinculada a la OU que contiene todos los equipos objetivo y que el enlace esté Habilitado.
Group Policy Results Wizard paso a paso
El asistente de resultados de directiva (o gpresult) es la forma más rápida de saber si la asignación de software se procesó:
- En la GPMC, haz clic secundario sobre Resultados de Directiva de Grupo y selecciona Resultados de directiva de grupo (Wizard).
- Elige Otro equipo → escribe el nombre FQDN del equipo a analizar.
- Selecciona Otro usuario e indica un usuario estándar –así ves tanto Configuración de Equipo como de Usuario.
- Finaliza el asistente y examina el informe HTML generado. Dentro de Configuración de Software ▸ Instalación de Software verás:
- Asignación aplicada → la instalación empezó; revisa el Visor de eventos para confirmar si terminó.
- Error de asignación → la causa se muestra abajo (acceso denegado, tiempo de espera, paquete no encontrado…).
- Guarda el informe (Guardar | Exportar); repite el proceso con varios equipos o usa
gpresult /H informe.html
desde PowerShell para automatizar lotes.
Interpretar el Visor de eventos
Mientras la GPO confirma que el paquete “llegó” al equipo, los log determinan si el MSI terminó bien.
Origen | ID | Significado | Acción recomendada |
---|---|---|---|
MsiInstaller | 1040 | Inicio de instalación | Verifica que no se corte la energía ni la red |
MsiInstaller | 11707 | Instalación correcta | Ninguna, marcar como Instalado |
MsiInstaller | 11708 / 1035 | Instalación fallida | Revisa %WINDIR%\Temp\MSI*.log |
Application Management | 102 | Asignación correcta | Confirma ID 11707 posterior |
Application Management | 103 / 108 | Asignación fallida | Verifica rutas UNC y permisos NTFS |
Application Management | 117 | Tiempo de espera | Aumenta Always wait for network o reinicia |
Para exportar los eventos y filtrarlos masivamente:
Get-WinEvent -LogName Application -FilterHashtable @{
ProviderName='MsiInstaller'
Id=@(11707,11708)
StartTime=(Get-Date).AddDays(-7)
} | Export-Csv C:\Temp\Genian_Eventos.csv -NoTypeInformation
Inventario con PowerShell
Ahora que entiendes cómo se ha procesado cada instalación, conviene generar un inventario central. El siguiente script realiza —en paralelo— un Get-CimInstance
contra todos los equipos del dominio y devuelve un CSV con el estado:
Import-Module ActiveDirectory
Ajusta el número de hilos a tu entorno
$ThrottleLimit = 20
$Computers = Get-ADComputer -Filter {Enabled -eq $true} | Select-Object -ExpandProperty Name
$Results = @()
$ScriptBlock = {
param($Computer)
if (Test-Connection -ComputerName $Computer -Quiet -Count 1) {
try {
$product = Get-CimInstance -Class Win32_Product -ComputerName $Computer `
-Filter "Name = 'Genian NAC'" -ErrorAction Stop
if ($product) {
return [PSCustomObject]@{
Equipo = $Computer
Estado = 'Instalado'
Version = $product.Version
Usuario = (Get-CimInstance -Class Win32_ComputerSystem -ComputerName $Computer).Username
Fecha = $product.InstallDate
}
}
} catch {
# ignorar errores de WMI no críticos
}
}
[PSCustomObject]@{
Equipo = $Computer
Estado = 'No instalado'
Version = ''
Usuario = ''
Fecha = ''
}
}
$Results = $Computers | ForEach-Object -Parallel $ScriptBlock -ThrottleLimit $ThrottleLimit
$Results | Export-Csv C:\Temp\GenianNAC_Resumen.csv -NoTypeInformation -Encoding UTF8
Write-Host "Archivo generado en C:\Temp\GenianNAC_Resumen.csv"
El fichero resultante servirá como fuente única de la verdad. Ábrelo en Excel o Power BI para filtrar los equipos No instalados y planificar la remediación.
Optimización del script
- Para evitar los habituales Win32_Product freeze, usa el
Uninstall
GUID desde el registro (HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
) o el móduloGet-Package
(PowerShell 5 + PackageManagement). - Si tu dominio es grande (>2000 equipos), lee los nombres a la carta (
-SearchBase
) o en bloques por OU. - Considera el parámetro
-Authentication PacketPrivacy
en redes duramente segmentadas.
Cómo procesar el CSV
Una vez tengas GenianNAC_Resumen.csv
:
- Importa el archivo en Excel y aplica un filtro por Estado = No instalado.
- Añade una columna Motivo y, basándote en los eventos MsiInstaller (ID 11708), indica la causa: Acceso denegado, Paquete no encontrado, Tiempo de espera, etc.
- Si usas Microsoft Endpoint Configuration Manager (MECM) o Intune, importa la lista para crear colecciones dinámicas de remediación.
Estrategias de remediación inteligente
- Conectividad primero: haz
Test-Connection
masivo para ver si los fallos se deben a equipos apagados o fuera de línea. - Permisos de lectura: asegúrate de que Authenticated Users tenga permisos Read y Read & Execute en la carpeta que aloja
GenianNAC.msi
. - Instalación silenciosa manual:
msiexec /i "\\Servidor\Share\GenianNAC.msi" /qn /l*v C:\Temp\GenianNAC.log
Repite la línea anterior conpsexec
o mediante una tarea programada para no interrumpir al usuario. - Forzar la GPO: mueve los equipos problemáticos a una OU de quarantena, aplica la GPO de nuevo y ejecuta
gpupdate /force
seguido de un reinicio. - Registro detallado: agrega el valor
Logging
enHKEYLOCALMACHINE\Software\Policies\Microsoft\Windows\Installer
con datosvoicewarmup
para habilitar log avanzado MSI (útil en errores 1603 genéricos).
Buenas prácticas para despliegues futuros
La prevención es mejor que la corrección. Integra estos consejos en tu flujo de trabajo:
- Ubica la GPO de instalación al nivel de dominio solo si todos los equipos deben recibir Genian NAC; de lo contrario, usa OUs específicas para evitar conflictos.
- Habilita Always wait for the network at computer startup en Computer Configuration ▸ Policies ▸ Administrative Templates ▸ System ▸ Logon para equipos con Wi‑Fi o latencia elevada.
- Incluye Genian NAC en tu golden image de Windows 10/11 y emplea la GPO solo para drift management.
- Documenta la versión del MSI y actualízala regularmente; una GPO con múltiples revisiones causa herencias confusas.
- Usa etiquetas de Dynamic Device Groups (si cuentas con Intune) para re‑instalar automáticamente cuando falle el agente.
Preguntas frecuentes
¿Puedo usar Win32_Product
sin afectarle al sistema?
La clase Win32_Product
reprocesa cada MSI instalado y puede disparar reparaciones; usa Get-Package
o lee el registro para entornos críticos.
¿Existe un GUID fijo para Genian NAC?
No; cada versión del MSI crea su propio GUID. Obtén el valor desde HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
o con Get-Package -Name "Genian*"
.
¿Debo habilitar User Configuration o basta con Computer Configuration?
Para instalaciones de software, Computer Configuration es más robusto (se ejecuta en el arranque y no requiere sesión de usuario). Utiliza User Configuration solo si el MSI necesita variables de perfil.
Conclusión
Controlar el estado de instalación de Genian NAC después de un despliegue por GPO no tiene por qué ser un juego de adivinanzas. Con una combinación de GPMC, Group Policy Results Wizard, registros de eventos y PowerShell, obtendrás un inventario exhaustivo que te permitirá corregir fallos con cirugía de precisión y sin afectar a los equipos que ya funcionan. Integra las buenas prácticas descritas y tu próximo despliegue de software será más predecible, escalable y fácil de auditar.