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
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).
- 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.
- 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); - Permitir la ejecución de scripts de PowerShell:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Unrestricted -Force
- Importe el módulo a su sesión de PowerShell:
Import-Module PSWindowsUpdate
Nota. 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).
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.
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
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.
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
Para eliminar ciertos productos o paquetes de la lista de actualizaciones recibidas por su computadora, puede excluirlos de la siguiente manera:
- Categoría (-NotCategory);
- Título (-NotCategory);
- 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
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 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.
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
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
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.
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
Relacionados:
Contenido