/
/

Cómo automatizar el reintento de parches con PowerShell para reducir la intervención manual

por Team Ninja
How to Automate Patch Retry Logic via PowerShell to Reduce Manual Intervention blog banner image

Resumen instantáneo

Este post ofrece una lista completa de comandos CMD básicos y una inmersión profunda en los comandos de Windows, con más de 70 comandos cmd esenciales tanto para principiantes como para usuarios avanzados. Explica comandos prácticos del símbolo del sistema para la gestión de archivos, la navegación por directorios, la solución de problemas de red, las operaciones de disco y la automatización con ejemplos reales para mejorar la productividad. Tanto si estás aprendiendo los comandos básicos de cmd como si ya dominas las herramientas avanzadas de la CLI de Windows, esta guía te ayudará a utilizar el Símbolo del sistema de forma más eficaz.

Puntos clave

  • Identifica los parches fallidos: usa PowerShell (PSWindowsUpdate o los registros de eventos) para detectar intentos de actualización fallidos o incompletos antes de reintentarlos.
  • Reintenta la instalación con PowerShell: vuelve a intentar las actualizaciones fallidas mediante scripts con gestión de errores para evitar fallos silenciosos.
  • Haz seguimiento de los reintentos: guarda el número de reintentos, las marcas de tiempo y los KB fallidos en el Registro para evitar bucles infinitos y mantener la visibilidad.
  • Automatiza con tareas programadas o con un RMM: programa scripts de reintento recurrentes o despliégalos a gran escala con NinjaOne, GPO o herramientas similares.
  • Valida las condiciones de actualización: comprueba que las fuentes de actualización sean accesibles y reinicia el servicio Windows Update antes de reintentar para mejorar la tasa de éxito.

Las actualizaciones fallidas son un problema recurrente en la gestión de parches, y suelen deberse a problemas de red, bloqueos del sistema o conflictos entre servicios. Si no se resuelven, pueden provocar un rendimiento inestable y dejar los endpoints expuestos a amenazas.

Automatizar el reintento de parches ayuda a reducir riesgos, bajar el tiempo medio de reparación (MTTR) y mejorar la tasa de éxito de las actualizaciones sin saturar a los técnicos con un gran volumen de tickets.

Estandariza los flujos de trabajo de parcheo para mejorar el MTTR y la documentación.

→ Prueba gratis NinjaOne Autonomous Patch Management

Pasos para automatizar el reintento de parches y mitigar los fallos de actualización

La corrección automática de los fallos de parcheo elimina los diagnósticos manuales a contrarreloj y garantiza el cumplimiento de parches en todos los endpoints. Así se reduce la carga de trabajo de los técnicos y, además, los registros aportan visibilidad sobre los patrones de fallo recurrentes.

📌 Casos de uso: aprovecha los scripts de PowerShell para listar los intentos de actualización anteriores y extraer los códigos de error, de modo que los scripts puedan reintentar, esperar o detenerse. Mediante tareas programadas, plataformas RMM y despliegue por GPO, los técnicos pueden automatizar el reintento de parches fallidos o ausentes.

📌 Requisitos previos:

  • SO compatible: Windows 11 o Windows Server 2016 o posterior
  • Permisos: privilegios de administrador o SYSTEM
  • Fuente de actualización: WSUS, Intune o Windows Update
  • Opcional: plataformas RMM como NinjaOne

💡 Nota: algunos pasos pueden variar según los valores predeterminados del sistema o la configuración activa de cada entorno. Además, Microsoft ha anunciado que WSUS está en proceso de retirada. Aunque todavía se incluye con Windows en el momento de escribir este artículo, recomendamos migrar a herramientas en el cloud como Windows Autopatch e Intune, o Azure Update Manager.

Paso 1: identifica los parches fallidos con scripts de PowerShell

Una corrección automatizada eficaz de los fallos de parcheo empieza por una detección proactiva. Los siguientes scripts consultan el historial y los resultados de actualización de un endpoint y devuelven las entradas problemáticas para tener una visión más clara.

Filtra los parches fallidos con el módulo PSWindowsUpdate

Este script lee las últimas 200 entradas del historial de actualizaciones, descarta las instalaciones correctas y muestra solo las entradas fallidas.

Import-Module PSWindowsUpdate
# Retrieve failed updates
$failedUpdates = Get-WindowsUpdate -IsHidden:$false -ErrorAction SilentlyContinue |
Where-Object { $_.ResultCode -ne 2 } # 2 = Succeeded

⚠️ Importante: si te saltas la instalación de PSWindowsUpdate, se producirán errores, ya que este módulo de PowerShell no viene incluido en Windows de forma predeterminada. (Consulta ⚠️ Aspectos a tener en cuenta)

Método alternativo para filtrar parches fallidos desde el registro de eventos de Windows

Este script consulta los registros del cliente de Windows Update y busca entradas con señales de fallo habituales, como los ID 20, 25 y 31.

Get-WinEvent -LogName "System" | Where-Object {
$_.ProviderName -eq «Microsoft-Windows-WindowsUpdateClient» -and
$_.Id -in 20, 25, 31 # Common failure event IDs
}

Paso 2: reintenta los parches fallidos con lógica de PowerShell

Una vez que aparecen las actualizaciones fallidas de un endpoint, puedes usar scripts de PowerShell para volver a intentar los parches automáticamente. Así se eliminan las tareas de parcheo manual y se consigue una corrección desatendida a gran escala en cuanto se detecta un fallo.

Script de PowerShell de ejemplo para reintentar la instalación de actualizaciones fallidas

Este script parte de $failedUpdates, tal como se vio en el paso 1, y recorre las actualizaciones fallidas enumeradas para reinstalarlas.

foreach ($update in $failedUpdates) {
Write-Output «Retrying: $($update.Title)»
Install-WindowsUpdate -KBArticleID $update.KBArticleID -AcceptAll -AutoReboot -IgnoreReboot -ErrorAction Continue
}

Script de ejemplo con gestión de errores

try {
Install-WindowsUpdate -KBArticleID $update.KBArticleID -AcceptAll -ErrorAction Stop
} catch {
Write-Output «Retry failed for: $($update.KBArticleID) – $_»
}

⚠️ Importante: usa la gestión de errores para evitar que los scripts fallen de forma silenciosa. (Consulta ⚠️ Aspectos a tener en cuenta).

Paso 3: registra los reintentos en el Registro para su seguimiento

Aprovecha el Registro para guardar el número de reintentos y los KB fallidos y poder hacer consultas locales rápidas. Esto permite una identificación persistente incluso cuando un endpoint está desconectado durante caídas de WSUS o del RMM.

Script de PowerShell de ejemplo para registrar los reintentos y las marcas de tiempo de los resultados en el Registro:

New-Item -Path "HKLM:\SOFTWARE\Org\PatchRetry" -Force
Set-ItemProperty -Path "HKLM:\SOFTWARE\Org\PatchRetry" -Name "LastRetry" -Value (Get-Date).ToString(«u»)
Set-ItemProperty -Path "HKLM:\SOFTWARE\Org\PatchRetry" -Name "FailedKBs" -Value ($failedUpdates.KBArticleID -join «, «)

Script de PowerShell de ejemplo para comprobar el estado de los parches en el Registro:

Get-ItemProperty -Path ‘HKLM:\SOFTWARE\Org\PatchRetry’

Paso 4: automatiza los reintentos con tareas programadas o con NinjaOne RMM

Programa scripts en todos los endpoints para comprobar el cumplimiento de forma periódica y reinstalar automáticamente los parches en los dispositivos que no lo cumplan. Con NinjaOne, los técnicos pueden crear condiciones compuestas para que los reintentos de parches se vuelvan a aplicar después de una ejecución fallida.

Crea una tarea programada recurrente con un script .ps1 ya existente desde CMD:

schtasks /create /tn «RetryFailedPatches» /tr "powershell.exe -File C:\Scripts\PatchRetry.ps1" /sc daily /st 02:00 /ru SYSTEM

💡 Consejo: guarda el script de reintento del paso 2 como archivo .ps1 y apunta tu comando a su ruta.

Actualiza automáticamente los valores del Registro y controla el éxito o el límite de reintentos con un script de PowerShell

$retryCount = (Get-ItemProperty -Path "HKLM:\SOFTWARE\Org\PatchRetry").RetryCount
if ($retryCount -gt 3) {
# escalate or log for technician
}

Paso 5: usa GPO para garantizar una configuración de actualización compatible con los reintentos

Los reintentos automáticos de parches funcionan mejor cuando Windows Update se comporta de forma predecible. Los técnicos pueden desplegar GPO para descargar previamente el contenido de las actualizaciones, programar las instalaciones y posponer los reinicios dentro de configuraciones base.

⚠️ Advertencia: es recomendable probar las GPO en local antes de desplegarlas. (Consulta ⚠️ Aspectos a tener en cuenta).

  1. Abre la Consola de administración de directivas de grupo (gpmc.msc) y ve a:

Configuración del equipo > Plantillas administrativas > Componentes de Windows > Windows Update

  1. Configura las siguientes directivas:
Ajustes Configuración recomendada Definición
Configurar Actualizaciones automáticas Marca la casilla Descargar automáticamente y programar la instalación. Descarga previamente las actualizaciones de forma automática y las instala según una programación definida.
Especificar la ubicación del servicio de actualización de Microsoft en la intranet Selecciona Habilitada e introduce la URL HTTP(S) del servidor WSUS que prefieras en estos campos:

  • Configurar el servicio de actualización de la intranet para detectar actualizaciones.
  • Configurar el servidor de estadísticas de la intranet.
Especifica el servidor WSUS al que Actualizaciones automáticas consultará las actualizaciones.
No reiniciar automáticamente con las instalaciones programadas de actualizaciones automáticas Configura la directiva como Habilitada. Desactiva los reinicios automáticos cuando hay una sesión iniciada, para evitar interrupciones a mitad de sesión.
Volver a preguntar para reiniciar con las instalaciones programadas Configura la directiva como Deshabilitada. Deja de pedir a los usuarios que reinicien a mitad de sesión después de una actualización programada.
  1. Después de vincular la GPO a una OU, ejecuta el siguiente comando de PowerShell en un endpoint de destino: gpupdate /force

⚠️ Aspectos a tener en cuenta

Riesgos Posibles consecuencias Cómo revertirlo
Saltarse la instalación del módulo PSWindowsUpdate Usar los cmdlets de Windows Update sin el módulo de PowerShell necesario provocará errores. Carga el módulo PSWindowsUpdate ejecutando Import-Module PSWindowsUpdate en una consola de PowerShell.
No incluir gestión de errores en los scripts Sin una gestión de errores adecuada, los scripts fallan de forma silenciosa y los técnicos tienen que adivinar qué ha ido mal. Aprovecha la gestión de errores de PowerShell en los scripts para documentar mejor los errores cuando se producen.
Desplegar GPO sin probarlas Las GPO sin probar pueden contener configuraciones incorrectas que afecten gravemente a los endpoints una vez desplegadas. Prueba las GPO en local, en un entorno controlado, antes de desplegarlas en todo el entorno.

Qué tener en cuenta al automatizar el reintento de parches fallidos

Al automatizar los reintentos de parches, es fundamental garantizar una transición fluida entre pasos, ya que un solo contratiempo puede provocar errores. Estas consideraciones ayudan a que los scripts decidan correctamente el siguiente paso y mejoren la tasa de éxito de los reintentos.

Aplicar límites de reintentos

Los límites de reintentos almacenados en el Registro ayudan a evitar bucles infinitos y avalanchas de tickets. Define incrementos en cada ejecución para aumentar el tiempo de espera con cada fallo. Cuando se alcanza el número máximo de intentos, los límites impiden que los scripts se ejecuten y escalan el problema una sola vez.

Reiniciar el servicio Windows Update

Los fallos de parcheo pueden producirse cuando Windows Update (wuauserv) no está accesible, y un reinicio rápido del servicio suele resolverlo. Por eso conviene reiniciar Windows Update antes de iniciar otro reintento.

  • Script de PowerShell de ejemplo para reiniciar wuauserv: Restart-Service -Name wuauserv

Solución para dispositivos sin conexión

Los dispositivos sin conexión pueden agotar rápidamente los límites de reintentos y hacer que los scripts los omitan por completo. Con plataformas RMM como NinjaOne, los técnicos pueden definir una condición basada en el resultado del script para reintentar o reiniciar en horas de menor actividad.

Validar las fuentes de parches

Antes de reintentar, los scripts deberían comprobar si la fuente de parches es accesible, ya que las fuentes no disponibles suelen provocar fallos. Si tras la validación la fuente sigue caída, aplica una espera breve, pero no la cuentes como reintento fallido. Si falla un solo KB, déjalo en pausa y continúa con el resto de parches para reintentarlo más tarde.

Guía de inicio rápido

NinjaOne ofrece varias funciones para automatizar la gestión de parches y reducir la intervención manual:

1. Patch Intelligence AI

Evalúa automáticamente los riesgos de los parches cada seis horas

  • Puede mover los parches entre los estados aprobado, manual y rechazado según los comentarios de la comunidad
  • Ayuda a reducir los riesgos de parches potencialmente problemáticos

2. Estrategias de aprobación y reintento

Varios niveles de aprobación de parches:

  • Excepciones a nivel de dispositivo
  • Excepciones a nivel de política
  • Aprobaciones o rechazos globales anticipados
  • Puede aprobar parches automáticamente tras un número determinado de días (hasta 30 días para actualizaciones y 365 días para actualizaciones de funciones)
  • Permite aprobar o rechazar parches manualmente por número de KB o por ID de parche

3. Despliegue por anillos

Despliegue escalonado de parches para minimizar riesgos

  • Crea grupos de dispositivos para los distintos anillos de despliegue
  • Prueba los parches en un pequeño subconjunto de dispositivos antes de desplegarlos a mayor escala

4. Programación y reintento de parches

Se recomienda separar los ciclos de análisis y de actualización al menos una hora

  • Los ciclos de análisis se ejecutan antes que los ciclos de aplicación
  • Opciones de reinicio y notificaciones configurables

Resolución de problemas en la automatización de scripts de reintento de parches

Problema n.º 1: no hay actividad de reintento

Sin la elevación adecuada, la lógica de reintento no se ejecuta y no se registra ninguna actividad. Como solución, comprueba si el script se ejecuta como SYSTEM o con los privilegios más altos. Además, valida la sintaxis del script y verifica que existan todas las rutas a las que hace referencia.

Problema n.º 2: no se encuentra la actualización

Comprueba si la actualización que falta está disponible en la fuente que has especificado. Valora fuentes alternativas como Windows Update en lugar de Windows Server Update Services (WSUS) para no agotar los reintentos con consultas inútiles.

Problema n.º 3: las actualizaciones fallan de forma constante

Combina los reintentos con la información de los registros de Windows Update para localizar con precisión los errores de los parches fallidos.

  • Script de PowerShell de ejemplo para consultar los registros de Windows Update:

Import-Module PSWindowsUpdate

Get-WindowsUpdateLog

Problema n.º 4: bucle de reinicios

A veces las actualizaciones piden reiniciar el dispositivo antes de aplicarse, y un apagado no tiene el mismo efecto. Si se pasa por alto, es fácil caer en el ciclo de volver a aplicar parches sin ningún cambio perceptible. Para evitarlo, comprueba si el endpoint solicita un reinicio, confírmalo y vuelve a intentar la actualización.

Servicios de NinjaOne que simplifican la automatización del reintento de parches

NinjaOne ayuda a automatizar las consultas y la corrección de parches para garantizar el cumplimiento y reducir la necesidad de intervención manual. Estas son algunas de las funciones de NinjaOne que puedes aprovechar para simplificar la automatización de los reintentos de parches a gran escala.

  • Tarea programada por política. Usa las capacidades de automatización programada de NinjaOne para definir reintentos en grupos de dispositivos dentro de los intervalos que indiques.
  • Panel de gestión de parches. El panel de NinjaOne clasifica los dispositivos según los parches fallidos, correctos y pendientes para mejorar la visibilidad. Los técnicos también pueden generar fácilmente informes de parches personalizados desde el panel.
  • Condiciones compuestas. Crea disparadores de automatización personalizados, como generar notificaciones, ejecutar scripts o escalar casos, en función del resultado de los scripts.
  • Despliegue remoto de scripts. Ejecuta scripts de forma remota y a gran escala para mantener una automatización de reintentos coherente ante parches fallidos en todo el entorno.

Automatiza la documentación de parches para gestionar los errores con eficacia.

→ Descubre NinjaOne para la gestión de parches

Automatiza la corrección de fallos de parcheo para maximizar el tiempo de actividad

Desde la consulta del historial de actualizaciones hasta la aplicación de políticas base, esta guía ofrece a los técnicos estrategias sólidas para empezar a automatizar. Con NinjaOne encargándose de la monitorización, el despliegue de scripts y la programación, la lógica de reintento de parches se puede automatizar desde un único panel de control.

Consolidar las estrategias de automatización en una plataforma centralizada hace que todo el marco de automatización sea proactivo y permite corregir rápidamente los problemas en cuanto se detectan. Así se reduce el tiempo de inactividad, baja el volumen de tickets y se garantiza un cumplimiento de parches coherente en todos los endpoints.

Temas relacionados:

FAQs

Puedes automatizar los reintentos de parches con scripts de PowerShell que detecten las actualizaciones fallidas, recorran los KB con error y los reinstalen usando el módulo PSWindowsUpdate. Añadir gestión de errores y lógica de reintento garantiza una corrección fiable y desatendida.

Los fallos de parcheo suelen deberse a problemas de red, bloqueos del sistema y conflictos entre servicios. La lógica de reintento automatizada los reduce al detectar los errores pronto, volver a intentar la instalación, reiniciar servicios si es necesario y registrar cada intento para ganar visibilidad.

Puedes guardar el número de reintentos, las marcas de tiempo y los KB fallidos en el Registro de Windows. Este registro persistente ayuda a evitar bucles infinitos, permite aplicar límites de reintentos y facilita una resolución de problemas precisa en todos los endpoints.

Sí. Las tareas programadas, la configuración por GPO y las plataformas RMM como NinjaOne te permiten desplegar scripts, aplicar políticas de actualización y ejecutar reintentos a gran escala en grupos de dispositivos con reglas de automatización coherentes.

El módulo PSWindowsUpdate es necesario para consultar, instalar y reintentar las actualizaciones de Windows. Sin él, los scripts de parcheo basados en PowerShell fallarán o devolverán resultados incompletos.

Las GPO garantizan un comportamiento predecible de las actualizaciones: descargan los parches con antelación, programan la instalación, controlan los reinicios y definen las fuentes WSUS, creando así un entorno donde la lógica de reintento funciona de forma coherente.

Las herramientas de terceros, como NinjaOne RMM, aportan funciones que cubren las carencias habituales que los equipos de TI necesitan resolver para complementar Intune. Esto incluye el parcheo de aplicaciones de terceros, la cobertura multiplataforma para macOS y Linux, además del soporte remoto y la resolución de problemas, que Intune no ofrece de forma nativa.

Quizá también te interese…

¿Listo para simplificar los aspectos más complejos de las TI?

Términos y condiciones de NinjaOne

Al hacer clic en el botón «Acepto» que aparece a continuación, estás aceptando los siguientes términos legales, así como nuestras Condiciones de uso:

  • Derechos de propiedad: NinjaOne posee y seguirá poseyendo todos los derechos, títulos e intereses sobre el script (incluidos los derechos de autor). NinjaOne concede al usuario una licencia limitada para utilizar el script de acuerdo con estos términos legales.
  • Limitación de uso: solo podrás utilizar el script para tus legítimos fines personales o comerciales internos, y no podrás compartirlo con terceros.
  • Prohibición de republicación: bajo ninguna circunstancia está permitido volver a publicar el script en ninguna biblioteca de scripts que pertenezca o esté bajo el control de cualquier otro proveedor de software.
  • Exclusión de garantía: el script se proporciona «tal cual» y «según disponibilidad», sin garantía de ningún tipo. NinjaOne no promete ni garantiza que el script esté libre de defectos o que satisfaga las necesidades o expectativas específicas del usuario.
  • Asunción de riesgos: el uso que el usuario haga del script corre por su cuenta y riesgo. El usuario reconoce que existen ciertos riesgos inherentes al uso del script, y entiende y asume cada uno de esos riesgos.
  • Renuncia y exención: el usuario no hará responsable a NinjaOne de cualquier consecuencia adversa o no deseada que resulte del uso del script y renuncia a cualquier derecho o recurso legal o equitativo que pueda tener contra NinjaOne en relación con su uso del script.
  • CLUF: si el usuario es cliente de NinjaOne, su uso del script está sujeto al Contrato de Licencia para el Usuario Final (CLUF).