PSWindowsUpdate: administración de actualizaciones de Windows desde PowerShell

Es muy conveniente utilizar el especial PSWindowsUpdate módulo de PowerShell para administrar las actualizaciones de Windows desde la interfaz de línea de comandos. PSWindowsUpdate no está integrado en Windows y es un módulo de terceros disponible en Technet Script Gallery. PSWindowsUpdate permite a los administradores comprobar, instalar, eliminar y ocultar de forma remota las actualizaciones en los servidores y estaciones de trabajo de Windows. El módulo PSWindowsUpdate es especialmente valioso para administrar actualizaciones en Windows Server Core, las ediciones Hyper-V que no tienen interfaz gráfica, así como al configurar una imagen de Windows en el modo de auditoría.

PSWindowsUpdate: instalar el módulo PowerShell de Windows Update

Puede instalar el módulo PSWindowsUpdate en Windows 10 y Windows Server 2016 desde el repositorio en línea (PSGallery) usando PackageManagement con un solo comando:

Install-Module -Name PSWindowsUpdate

En mi caso, apareció una advertencia de que PSWindowsUpdate 1.5.2.6 ya estaba instalado. Para instalar una versión más reciente del módulo, debe ejecutar el comando:

Install-Module -Name PSWindowsUpdate –Force

Una vez completada la instalación, debe verificar el paquete:

Get-Package -Name PSWindowsUpdate

Módulo de instalación PSWindowsUpdate de PSGallery

Si tiene una versión anterior de Windows (Windows 7 / 8.1 / Windows Server 2008 R2 / 2012 R2) o no tiene acceso directo a Internet, puede instalar PSWindowsUpdate manualmente.

Este módulo se puede instalar en cualquier versión compatible de Windows a partir de Vista / Windows Server 2008 con PowerShell 2.0 instalado (aunque se recomienda PoSh 3.0 o posterior).

  1. Descargue la última versión de PSWindowsUpdate desde esta página: https://gallery.technet.microsoft.com/scriptcenter/2d191bcd-3308-4edd-9de2-88dff796b0bc y desbloquear el archivo descargado;Tenga en cuenta que solo la versión anterior del módulo está disponible en la galería de scripts de TechNet, v 1.5.6. Mientras se instala el administrador de paquetes NuGet PSWindowsUpdate 2.1.1.2 de PowershellGallery. Los cmdlets y parámetros de PowerShell disponibles pueden variar en diferentes versiones del módulo.

    descargar y desbloquear el módulo PSWindowsUpdate

  2. Extraiga el archivo con el módulo PS en uno de los siguientes directorios: %USERPROFILE%DocumentsWindowsPowerShellModules o %WINDIR%System32WindowsPowerShellv1.0Modules (el último es mejor si va a utilizar el módulo con frecuencia);
  3. Permitir la ejecución de scripts de PowerShell: Set-ExecutionPolicy -Scope Process -ExecutionPolicy Unrestricted -Force
  4. Importe el módulo a su sesión de PowerShell: Import-Module PSWindowsUpdate Módulo de importación PSWindowsUpdateNota. En Windows 7 / Windows Server 2008 R2, al importar el módulo PSWindowsUpdate, puede aparecer el siguiente error: El término «Desbloquear-Archivo» no se reconoce como el nombre de un cmdlet. La causa es que el módulo usa algunas funciones que aparecían solo en PowerShell 3.0. Para utilizar estas funciones, deberá actualizar la versión de PowerShell o eliminar la | Unblock-File línea del archivo PSWindowsUpdate.psm1 manualmente.

Después de instalar el módulo PSWindowsUpdate en su computadora, puede instalarlo de forma remota en otras computadoras o servidores usando el Update-WUModule cmdlet. Por ejemplo, para copiar el módulo PSWindowsUpdate de su computadora a dos servidores remotos, ejecute los comandos (necesita acceder a los servidores remotos a través del protocolo SMB, puerto TCP 445):

$Targets = "lon-fs02", "lon-db01"
Update-WUModule -ComputerName $Targets –Local

Para guardar (exportar) el módulo PoSh a una carpeta de red compartida para seguir importando el módulo en otras computadoras, ejecute:

Save-Module -Name PSWindowsUpdate –Path \lon-fs02psmodules

Descripción general de los cmdlets de PSWindowsUpdate

Puede mostrar la lista de cmdlets disponibles en el módulo PSWindowsUpdate de la siguiente manera:

get-command -module PSWindowsUpdate

Describamos brevemente el uso de los comandos del módulo:

  • Clear-WUJob – use Get-WUJob para llamar a WUJob en el Programador de tareas;
  • Descargar-WindowsUpdate (alias de Get-WindowsUpdate –Download) – obtenga una lista de actualizaciones y descárguelas;
  • Get-WUInstall, Install-WindowsUpdate (alias de Get-WindowsUpdate –Install) – instalar actualizaciones;
  • Hide-WindowsUpdate (alias de Get-WindowsUpdate -Hide:$false) – Ocultar actualización;
  • Desinstalar WindowsUpdate – eliminar la actualización usando Remove-WindowsUpdate;
  • Agregar-WUServiceManager – registre el servidor de actualización (Windows Update Service Manager) en la computadora;
  • Habilitar WURemoting – habilitar las reglas de firewall de Windows para permitir el uso remoto de los cmdlets de PSWindowsUpdate;
  • Get-WindowsUpdate (Get-WUList): muestra una lista de actualizaciones que coinciden con los criterios especificados, le permite buscar e instalar las actualizaciones. Este es el cmdlet principal del módulo PSWindowsUpdate. Permite descargar e instalar actualizaciones desde un servidor WSUS o Microsoft Update. Le permite seleccionar categorías de actualización, actualizaciones específicas y establecer las reglas de reinicio de la computadora al instalar las actualizaciones;
  • Obtener WUApiVersion – obtenga la versión del Agente de Windows Update en la computadora;
  • Get-WUHistory – mostrar una lista de actualizaciones instaladas (historial de actualizaciones);
  • Get-WUInstallerStatus – comprobar el estado del servicio de Windows Installer;
  • Get-WUJob – ejecutar tareas de actualización de WUJob en el Programador de tareas;
  • Get-WULastResults – fechas de la última búsqueda e instalación de actualizaciones (LastSearchSuccessDate y LastInstallationSuccessDate);
  • Get-WURebootStatus – le permite verificar si es necesario reiniciar para aplicar una actualización específica;
  • Get-WUServiceManager – enumerar las fuentes de actualización;
  • Get-WUSettings – obtener la configuración del cliente de Windows Update;
  • Invoke-WUJob – llamar de forma remota trabajos de WUJobs en el Programador de tareas para ejecutar inmediatamente los comandos de PSWindowsUpdate;
  • Eliminar-WindowsUpdate – permite desinstalar una actualización por ID de KB;
  • Remove-WUServiceManager – deshabilitar el Administrador de servicios de actualización de Windows;
  • Set-PSWUSettings – guardar la configuración del módulo PSWindowsUpdate en el archivo XML;
  • Set-WUSettings – configurar la configuración del cliente de Windows Update;
  • Actualización-WUModule – actualice la versión del módulo PSWindowsUpdate (puede actualizar el módulo en una computadora remota copiándolo del actual o actualizándolo desde PSGallery).

enumerar los comandos del módulo PSWindowsUpdate

PowerShell: enumere todas las actualizaciones de Windows disponibles para una computadora

Puede enumerar las actualizaciones disponibles para esta computadora en el servidor de actualizaciones utilizando el Get-WindowsUpdate o Get-WUList comandos.

Get-WUList: vea las actualizaciones de Windows disponibles

Para verificar la lista de actualizaciones disponibles en una computadora remota, ejecute este comando:

Get-WUList –ComputerName server2

Puede comprobar de dónde debería obtener las actualizaciones de Windows. Ejecute el siguiente comando:

Get-WUServiceManager

ServiceID IsManaged IsDefault Name
--------- --------- --------- ----
8b24b027-1dee-babb-9a95-3517dfb9c552 False False DCat Flighting Prod
855e8a7c-ecb4-4ca3-b045-1dfa50104289 False False Windows Store (DCat Prod)
3da21691-e39d-4da6-8a4b-b43877bcb1b7 True True Windows Server Update Service
9482f4b4-e343-43b6-b170-9a65bc822c77 False False Windows Update

Get-WUServiceManager: obtener fuentes de actualización

Como puede ver, la computadora está configurada para recibir actualizaciones del servidor WSUS local (Servicio de actualización de Windows Server = Verdadero). En este caso, debería ver una lista de actualizaciones aprobadas para su computadora.

Si desea escanear su computadora en los servidores de Microsoft Update en Internet (además de las actualizaciones de Windows, estos servidores contienen Office y otras actualizaciones de productos de Microsoft), ejecute este comando:

Get-WUlist -MicrosoftUpdate

Recibirá esta advertencia:

Get-WUlist : Service Windows Update was not found on computer. Use Get-WUServiceManager to get registered service.

Para permitir el escaneo en Microsoft Update, ejecute este comando:

Add-WUServiceManager -ServiceID "7971f918-a847-4430-9279-4a52d1efe18d" -AddServiceFlag 7

Ahora puede escanear a Microsoft Update. Como puede ver, en este caso, se encontraron actualizaciones adicionales para Microsoft Visual C ++ 2008 y Microsoft Silverlight.

obtener actualizaciones de Microsoft Update para productos microsoft adicionales

Para verificar la versión del Agente de Windows Update en la computadora, ejecute el comando:

Get-WUApiVersion

ComputerName PSWindowsUpdate PSWUModuleDll ApiVersion WuapiDllVersion
------------ --------------- ------------- ---------- ---------------
DESKTOP-J... 2.1.1.2 2.0.6995.28496 8.0 10.0.18362.387

Get-WUApiVersion: verifique la versión del cliente de actualización de Windows

Para eliminar ciertos productos o paquetes de la lista de actualizaciones recibidas por su computadora, puede excluirlos de la siguiente manera:

  1. Categoría (-NotCategory);
  2. Título (-NotCategory);
  3. Número de actualización (-NotKBArticleID).

Por ejemplo, excluyamos OneDrive, los controladores y la KB específica de la lista de actualizaciones:

Get-WUlist -NotCategory "Drivers" -NotTitle "OneDrive" -NotKBArticleID KB4489873

Install-WindowsUpdate: instalación de actualizaciones de Windows con PowerShell

Para descargar e instalar automáticamente todas las actualizaciones disponibles para su computadora, ejecute el comando:

Install-WindowsUpdate -MicrosoftUpdate -AcceptAll -AutoReboot

La Aceptar todo La clave acepta la instalación de todos los paquetes de actualización y Reinicio automático permite que Windows se reinicie automáticamente después de que se instalen las actualizaciones.

Puede guardar el historial de instalación de la actualización en el archivo de registro (puede usarlo en lugar del archivo WindowsUpdate.log).

Install-WindowsUpdate -AcceptAll -Install -AutoReboot | Out-File "c:logs$(get-date -f yyyy-MM-dd)-WindowsUpdate.log" -force

Puede instalar solo los paquetes de actualización específicos por número de KB:

Get-WindowsUpdate -KBArticleID KB2267602, KB4533002 -Install

Get-WindowsUpdate Instalar actualizaciones powershell

En este caso, debe confirmar la instalación de cada actualización manualmente.

Si desea excluir algunas actualizaciones de la lista de instalación, ejecute este comando:

Install-WindowsUpdate -NotCategory "Drivers" -NotTitle OneDrive -NotKBArticleID KB4011670 -AcceptAll -IgnoreReboot

Instalar Windows Update en equipos remotos con PowerShell

El módulo PSWindowsUpdate le permite instalar actualizaciones de forma remota en varias estaciones de trabajo o servidores a la vez (PSWindowsUpdate debe instalarse / importarse en estas computadoras). Es muy conveniente ya que un administrador no tiene que iniciar sesión manualmente en todos los servidores cuando la instalación de la actualización está programada.

Casi todos los cmdlets del módulo PSWindowsUpdate le permiten administrar e instalar actualizaciones en equipos remotos. Para hacer esto, use el atributo: -Computername server1, server2, server3

Para administrar las actualizaciones en computadoras remotas, debe agregar nombres de host a su lista de hosts de confianza de winrm:

winrm set winrm/config/client ‘@{TrustedHosts="server1,server2,…"}’

Instale el módulo PSWindowsUpdate en computadoras remotas y permita acceder al proceso dllhost.exe a través de puertos RPC dinámicos en el Firewall de Windows Defender.

El siguiente comando instalará todas las actualizaciones disponibles en tres servidores remotos:

Invoke-WUInstall -ComputerName server1, server2, server3 -Script {ipmo PSWindowsUpdate; Get-WindowsUpdate -Install -AcceptAll -AutoReboot| Out-File C:WindowsPSWindowsUpdate.log } -Confirm:$false -Verbose -SkipModuleTest –RunNow

En PSWindowsUpdate 2.1, debe usar Invoke-WUJob en lugar del cmdlet Invoke-WUInstall. Este cmdlet crea una tarea del programador en un equipo remoto que se ejecuta en SYSTEM.

En las versiones más recientes del módulo PSWindowsUpdate, use el siguiente comando para instalar actualizaciones de forma remota en varias computadoras:

$ServerNames = "server1, server2, server3"
Invoke-WUJob -ComputerName $ServerNames -Script {ipmo PSWindowsUpdate; Install-WindowsUpdate -AcceptAll | Out-File C:WindowsPSWindowsUpdate.log } -RunNow -Confirm:$false

Puede instalar actualizaciones en una computadora remota y enviar un informe por correo electrónico al administrador:

Install-WindowsUpdate -ComputerName nysrv1 -MicrosoftUpdate -AcceptAll - IgnoreReboot -SendReport –PSWUSettings @{SmtpServer="smtp.woshub.com";From="[email protected]";To="[email protected]";Port=25} -Verbose

Get-WUHistory: Visualización del historial de actualizaciones de Windows mediante PowerShell

Utilizando la Get-WUHistory cmdlet, puede obtener la lista de actualizaciones instaladas anteriormente en una computadora de forma automática o manual.

Get-WUHistory: comprobación del historial de actualizaciones de Windows

Puede obtener la información sobre la fecha de instalación de una actualización específica:

Get-WUHistory| Where-Object {$_.Title -match "KB4517389"} | Select-Object *|ft

Get-WUHistory para una base de conocimiento específica

Para saber si la actualización se instaló en varios equipos remotos, puede usar este código de PowerShell:

"server1","server2" | Get-WUHistory| Where-Object {$_.Title -match "KB4011634"} | Select-Object *|ft

Remove-WindowsUpdate: desinstalación de actualizaciones de Windows

Para desinstalar correctamente las actualizaciones de PowerShell, puede usar el Eliminar-WindowsUpdate cmdlet. Simplemente especifique el número de KB como argumento del parámetro KBArticleID. Para retrasar el reinicio automático de la computadora, agregue la tecla –NoRestart:

Remove-WindowsUpdate -KBArticleID KB4489873 -NoRestart

Hide-WindowsUpdate: ¿Cómo ocultar las actualizaciones de Windows con PowerShell?

Puede ocultar las actualizaciones específicas para que el servicio Windows Update nunca las instale en su computadora (la mayoría de las veces es necesario ocultar las actualizaciones del controlador). Por ejemplo, para ocultar las actualizaciones KB4489873 y KB4489243, ejecute estos comandos:

$HideList = "KB4489873", "KB4489243"
Get-WindowsUpdate -KBArticleID $HideList –Hide

powershell: oculta KB específicos en la actualización de Windows

Ahora, la próxima vez que busque actualizaciones mediante el comando Get-WUInstall, las actualizaciones ocultas no se mostrarán en la lista de actualizaciones disponibles para la instalación.

Así es como puede mostrar la lista de actualizaciones ocultas en esta computadora:

Get-WindowsUpdate –IsHidden

Observe que el atributo H (Oculto) ha aparecido en la columna Estado de actualizaciones ocultas.

Get-WindowsUpdate –IsHidden - buscar actualizaciones ocultas

Para eliminar una actualización de las ocultas, ejecute este comando:

Get-WindowsUpdate -KBArticleID $HideList -WithHidden -Hide:$false

o:

Show-WindowsUpdate -KBArticleID $HideList

Para aquellos que se sientan incómodos en la consola PowerShell, recomendaría un gráfico de Windows Actualizar MiniTool para administrar las actualizaciones de Windows 10.

Artículos Interesantes