Windows Update es una de las partes de Windows 11 que más critican las personas. Las actualizaciones y reinicios forzados pueden ocurrir en los peores momentos, por lo que la frustración es comprensible, pero es un componente esencial para mantener la seguridad de su equipo.
Dicho esto, si no quieres lidiar con actualizaciones que interrumpan tu flujo de trabajo, hay una manera de evitarlo. PowerShell te ofrece las herramientas para automatizar el proceso de Windows Update y hacer que todo sea mucho menos molesto. Si eso te parece atractivo, te mostraremos cómo hacerlo.
Todos los pasos que involucran PowerShell deben ejecutarse con privilegios de administrador para garantizar que funcionen según lo previsto.
Configuración
Para automatizar las actualizaciones de Windows, todo lo que necesitas es la última versión de Windows PowerShell, que ya está incluida en las versiones modernas de Windows, y una cuenta de usuario con derechos de administrador. Con eso, querrás instalar el módulo PSWindowsUpdate, que permite una gestión de actualizaciones más sencilla. Este módulo te permite ejecutar varios comandos para administrar las actualizaciones de Windows. Pero en esta guía, nos centraremos en cómo automatizar el proceso, por lo que es relativamente fácil.
Para instalar este módulo, simplemente abra PowerShell con privilegios de administrador e ingrese este comando:
Módulo de instalación PSWindowsUpdate
PresioneYpara aceptar el mensaje que aparece para instalar el proveedor NuGet (esto puede no aparecer si ya tiene la última versión) y luegoApara decirSí a todo.
Luego tendrás que importar el módulo con el siguiente comando:
Módulo de importación PSWindowsUpdate
Si se le solicita, presioneApara confiar siempre en este módulo. Lo necesitará para que la automatización funcione más adelante.
Si este paso no funciona, es posible que deba configurar la política de ejecución en su PC. Ejecute este comando:
Set-ExecutionPolicy Sin restricciones
Después de esto, intente ejecutar el comando de importación nuevamente y debería funcionar. Sin embargo, tenga en cuenta que usar la configuración de política Sin restricciones puede representar un riesgo de seguridad.
Automatizar Windows Update con PowerShell
Creando el guión
Una vez que haya instalado el módulo anterior, la mejor opción es crear un script de PowerShell que busque actualizaciones y las instale cuando estén disponibles. Afortunadamente, esto ya se ha hecho en el pasado, por lo que tiene un par de opciones. Puede descargar el script de PowerShelldesde aquío seguir los pasos a continuación para crearlo usted mismo:
- Primero, crea una carpeta llamadaScriptsen la raíz de tu unidadC:. Luego, dentro de esta nueva carpeta, crea una carpetallamada Logs. Esto hará que sea más fácil ver los registros de tu script.
Como alternativa, puede modificar el script en el Bloc de notas para crear registros en otra carpeta que ya exista. Sin embargo, el script no puede escribir en un directorio que no esté ya creado.
- Abrael Bloc de notas.
- Copie el bloque de texto deesta páginay péguelo en el Bloc de notas.
- Haga clic enArchivo > Guardar como.
- Navegue hasta la carpeta donde desea guardar el archivo (como ejemplo, usemosC:\Users\joaoc\Documents).
- Cambie el menú desplegableGuardar como tipo aTodos los archivos.
- Elija un nombre para el archivo y agregue.ps1al final. Por ejemplo,RunWindowsUpdate.ps1.
- Haga clic enGuardar.
Este script básicamente busca todas las actualizaciones de Windows disponibles y, si encuentra alguna, las instala automáticamente y, además, reinicia el equipo después, si es necesario. Esto significa que debes ejecutar este script en un momento en el que no te importe que el equipo se reinicie. También registra automáticamente cualquier salida en un archivo con la fecha y hora actuales, lo que facilita ver el historial de actualizaciones en tu equipo.
Automatizar el script
El siguiente paso es hacer que el script se ejecute automáticamente, pero antes de eso, debemos asegurarnos de que no solicite más permisos. De forma predeterminada, los scripts de PowerShell tienen bloqueada su ejecución automática, por lo que debe desbloquear el archivo manualmente. Para ello, utilice el comandoUnblock-Fileen PowerShell, seguido de la ruta al script de PowerShell que acabamos de crear. Por ejemplo:
Desbloquear archivo "C:\Users\joaoc\Documents\RunWindowsUpdate.ps1"
Esto permitirá que el script de automatización se ejecute sin restricciones para que no tenga que aprobarlo ni hacer nada manualmente.
A continuación, puede crear la automatización utilizando otro script de PowerShell para automatizar el proceso, o puede utilizar el Programador de tareas para hacerlo. Utilizaremos el último método, ya que es más fácil de demostrar.
- Abra el menú Inicio y escribaProgramador de tareasen la barra de búsqueda. Seleccione la primera opción.
- Utilice el menú del lado derecho de la ventana para seleccionarCrear tarea básica. (Si desea organizar mejor sus tareas, puede crear primero una nueva carpeta).
- Ponle a la tarea un nombre comoActualizaciones automáticas de Windows(o cualquier otro que prefieras) y agrega unadescripciónsi lo prefieres. Haz clic enSiguiente.
- En la secciónActivador, elija la frecuencia con la que se debe ejecutar el script. La mejor opción aquí es probablemente configurarlo enDiariopara que pueda estar seguro de instalar las actualizaciones antes de que puedan molestarlo. Haga clic enSiguiente.
- En la página siguiente, selecciona cuándo se debe ejecutar la tarea por primera vez. Asegúrate de elegir un horario en el que no necesites usar la computadora. Por ejemplo,las 3 a. m.permitirían que la tarea se ejecute durante la noche. Pero también es posible que tengas la computadora apagada a esa hora, así que asegúrate de elegir un horario que te convenga.También puedes elegir cuántos días deben pasar entre cada ejecución. El valor predeterminado es1.Haz clic enSiguiente.
- En la pestañaAcción , seleccioneIniciar un programay haga clic enSiguiente.
- En la página siguiente, enPrograma/Script, ingresePowerShell.exe.
- Junto aAgregar argumentos (opcional), ingreselo siguiente (reemplace la ruta del archivo con lo que esté usando en su máquina):
-NoProfile -WindowStyle Oculto -Archivo "C:\Users\joaoc\Documents\RunWindowsUpdate.ps1"
- Haga clic enSiguientey luegoen Finalizar.
- Después de crear la tarea, vaya ala Biblioteca del Programador de tareasen el lado izquierdo de la ventana.
- Haga clic derecho enla tarea que ha creado y seleccionePropiedades.
- Haga clic enCambiar usuario o grupo....
- EscribaSistemaen el cuadro de texto y haga clic enVerificar nombres.
- Haga clic enAceptar.
- Marque la casilla denominadaEjecutar con los privilegios más altos.
- (Opcional) También puede ir a la pestañaCondiciones ydesmarcarla casilla que dice Iniciar la tarea solo si la computadora está conectada a la red eléctrica. Esto permitirá que la tarea se ejecute incluso si la computadora portátil está desconectada del cargador.
- Haga clic enAceptarpara finalizar la configuración.
El script se ejecutará automáticamente todos los días a la hora que hayas establecido (a menos que hayas elegido un programa de repetición diferente). Como alternativa, si también quieres usar PowerShell para esto, puedes usar un script para crear una tarea programada. Para ello, volverás a usar el Bloc de notas como hicimos anteriormente, pero luego copiaráseste texto de ejemplo. Puedes modificar las variables de tiempo según tus necesidades. Sigue los mismos pasos generales para crear el archivo PS1 y luego ejecútalo manualmente (solo lo necesitas una vez). Asegúrate también de cambiar la ruta del script para que coincida con el lugar donde hayas almacenado el archivo PS1.
Explorar posibles adiciones al guión
El script anterior es relativamente básico y comprobará si hay actualizaciones de Windows y las instalará, pero eso es todo. No hay lógica para gestionar posibles errores y no detectará actualizaciones que no sean de Windows, por ejemplo. Hay algunos cambios que puede realizar para solucionar algunas de estas deficiencias si necesita hacerlo.
Si desea incluir otras actualizaciones de software de Microsoft al instalar actualizaciones, puede agregar-MicrosoftUpdatecomo argumento junto a-Install-WindowsUpdateen el script que creamos. Básicamente, la línea ew se vería así:
Instalar-WindowsUpdate -MicrosoftUpdate -AcceptAll -AutoReboot -Verbose | Tee-Object -FilePath $LogPath -Append
Si trabaja en una organización grande y ejecuta este script en varias PC, es posible que también desee limitar el ancho de banda de cada una. Puede agregar el argumento-ThrottleDownloadpara hacerlo. Nuevamente, si estuviera modificando el script base, la nueva línea se vería así (como ejemplo):
Instalar-WindowsUpdate -ThrottleDownload 5Mbps -AcceptAll -AutoReboot -Verbose | Tee-Object -FilePath $LogPath -Append
También es posible utilizar este script en máquinas remotas con PowerShell Remoting, por lo que es otra consideración a tener en cuenta. En este caso, primero tendría que habilitar PowerShell Remoting con el comandoEnable-PSRemoting -Forcey luego modificar su script para que se ejecute en las máquinas deseadas. Puede encontrar un script de ejemplo para estoaquí(cortesía de Paul Amman enesta publicación de Medium). Sin embargo, tendrá que modificarlo con los nombres de computadora apropiados a los que desea dirigirse.
Si hay algún error con las actualizaciones, puede usar el Visor de eventos para ver qué sucedió o buscar la ubicación donde se almacenan sus archivos de registro para ver lo que se muestra allí.
Facilite las actualizaciones de Windows
A veces, Windows Update puede resultar molesto, pero este script de PowerShell facilita mucho las cosas, ya que ya no tendrás que preocuparte de que la computadora instale actualizaciones y se reinicie cuando no lo desees. Como todo sucede según un cronograma establecido, no tendrás que preocuparte por sorpresas. Incluso si no tienes conocimientos técnicos, estos pasos son bastante fáciles de seguir, por lo que vale la pena intentarlo.