meta data de esta página
Instalación de parches en Windows
Para parchear equipos con de windows podemos usar diversas alternativas
Dentro de un dominio
Lo mejor es utilizar un servidor como WSUS . Configuramos mediante una GPO para indicar el servidor local donde deben de conectarse los clientes y verificamos el acceso de los mismos al servidor por los puerto 8530 y 8531.
Equipos Fuera de un dominio
- WSUS Offline Update http://download.wsusoffline.net/
- winup.es
- Mediante un script https://msdn.microsoft.com/en-us/library/aa387102(VS.85).aspx
Si tenemos equipos que no pertenecen al dominio pero queremos que se actualizen desde el servidor WSUS debemos de hacer lo siguiente:
- Creamos un fichero de texto con el siguiente contenido y lo salvamos con extensión reg
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate] "WUServer"="http://ipservidorwsus:8530" "WUStatusServer"="ipservidorwsus:8530" [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU] "NoAutoUpdate"=dword:00000000 "UseWUServer"=dword:00000001
Copiamos el fichero creado al equipo que queramos que se actualize. Pinchamos sobre el mismo dos veces para que nos añada los valores anteriores al registro del equipo.
Ejecutamos desde una ventana de comandos (cmd) lo siguiente
wuauclt.exe /reportnow /detectnowy deberíamos de ver el equipo en la lista de equipos clientes del servidor WSUS
wuauclt.exe /resetauthorization /detectnow
Windows 10
En las versiones de windows 10 y windows 2016 la utilidad wuauclt ha sido reemplazada por usoclient . Ahora para lanzar una búsqueda de actualizaciones desde windows 10, tendríamos que abrir una consola como administradory ejecutar
usoclient StartScanLas opciones que podemos usar con usoclient son :
- StartScan → Para buscar que parches nos faltan
- StartDownload → Descarga los parches
- StartInstall → Instala los parches descargados
- RefreshSettings → Para cargar los nuevos valores si se ha hecho algún cambio
- StartInteractiveScan → Escaneo interactivo
- RestartDevice → Reinicia el equipo al terminar de instalar los parches
- ScanInstallWait → Combina escanear, descargar e instalar
- ResumeUpdate →Realiza el update en el inicio del equipo
Actualizar W10 con Powershell
- Arrancamos powershell
- Instalamos el módulo → Install-Module PSWindowsUpdate
- Get-Command -Module PSWindowsUpdate
- Ver las actualizaciones pendientes→ Get-WindowsUpdate
- Instalar las actualizaciones → Install-WindowsUpdate
- Install-WindowsUpdate -AcceptAll -AutoReboot
- Instalar un KB específico → Get-WindowsUpdate -Install -KBArticleID 'KB4560960'
Actualizar W10 con un script
Creamos el siguiente script de powershell y lo llamamos actualizar.ps1
$winVer = [System.Environment]::OSVersion.Version.Major $dir = 'C:\_Windows_FU\packages' mkdir $dir if ($winVer -eq 10) { $webClient = New-Object System.Net.WebClient $url = 'https://go.microsoft.com/fwlink/?LinkID=799445' $file = "$($dir)\Win10Upgrade.exe" $webClient.DownloadFile($url,$file) Start-Process -FilePath $file -ArgumentList '/quietinstall /skipeula /auto upgrade /copylogs $dir' } else { echo "This is Not Windows10 OS " } sleep 10 Remove-Item "C:\_Windows_FU" -Recurse -Force -Confirm:$false
Ojo el link $url hay que cambiarlo según el upgrade que queramos instalar
Para ejecutarlo powershell.exe -ExecutionPolicy Bypass ./actualizar.ps1
Otro Script
https://www.signalwarrant.com/force-wsus-checkin-with-powershell-2/
# *** THIS SCRIPT IS PROVIDED WITHOUT WARRANTY, USE AT YOUR OWN RISK *** <# .DESCRIPTION Starts the Windows Update service (wuauserv) if it is stopped and forces a checkin with the WSUS Server. This function uses the Invoke-Command CMDlet which will require PSRemoting to be enabled on the target machine. .NOTES File Name: force-WSUScheckin.ps1 Author: David Hall Contact Info: Website: www.signalwarrant.com Twitter: @signalwarrant Facebook: facebook.com/signalwarrant/ Google +: plus.google.com/113307879414407675617 YouTube Subscribe link: https://www.youtube.com/channel/UCgWfCzNeAPmPq_1lRQ64JtQ?sub_confirmation=1 Requires: PowerShell Remoting Enabled (Enable-PSRemoting) Tested: PowerShell Version 5 .PARAMETER ComputerName See the examples below, the computername can be one or many computer names .EXAMPLE .\force-WSUScheckin.ps1 -ComputerName CL1 .\force-WSUScheckin.ps1 -ComputerName CL1 -verbose .\force-WSUScheckin.ps1 -ComputerName CL1, CL2 -verbose .\force-WSUScheckin.ps1 -ComputerName (Get-Content -Path "C:\computers.txt") -verbose #> [CmdletBinding()] Param( [Parameter(Mandatory=$True)] [string[]]$ComputerName ) $service = get-service -Name wuauserv # Check to see if the wuauserv service is stopped if ($service.Status -eq "Stopped"){ # If the service is stopped we're going to start it and force WSUS checkin # then Exit Write-verbose "1. WUAUSERV is stopped... starting" Invoke-Command -ComputerName $ComputerName -scriptblock {Start-Service wuauserv} [System.Threading.Thread]::Sleep(3000) Write-verbose "2. Forcing WSUS Checkin" Invoke-Command -ComputerName $ComputerName -scriptblock {wuauclt.exe /detectnow} [System.Threading.Thread]::Sleep(1500) Write-verbose "3. Checkin Complete" Exit } else { # If the service is started we'll just force the WSUS checkin and Exit Write-verbose "1. Forcing WSUS Checkin" Invoke-Command -ComputerName $ComputerName -scriptblock {wuauclt.exe /detectnow} [System.Threading.Thread]::Sleep(1500) Write-Verbose "2. Checkin Complete" Exit }
Forzar la sincronización con WSUS
Ejecutar desde powershell en el equipo ccon problemas →
$updateSession = new-object -com "Microsoft.Update.Session"; $updates=$updateSession.CreateupdateSearcher().Search($criteria).Updates
Forzar la sincronización mediante un script
Function Force-WSUSCheckin($Computer) { Invoke-Command -computername $Computer -scriptblock { Start-Service wuauserv -Verbose } # Have to use psexec with the -s parameter as otherwise we receive an "Access denied" message loading the comobject $Cmd = '$updateSession = new-object -com "Microsoft.Update.Session";$updates=$updateSession.CreateupdateSearcher().Search($criteria).Updates' & c:\bin\psexec.exe -s \\$Computer powershell.exe -command $Cmd Write-host "Waiting 10 seconds for SyncUpdates webservice to complete to add to the wuauserv queue so that it can be reported on" Start-sleep -seconds 10 Invoke-Command -computername $Computer -scriptblock { # Now that the system is told it CAN report in, run every permutation of commands to actually trigger the report in operation wuauclt /detectnow (New-Object -ComObject Microsoft.Update.AutoUpdate).DetectNow() wuauclt /reportnow c:\windows\system32\UsoClient.exe startscan } }
https://pleasework.robbievance.net/howto-force-really-wsus-clients-to-check-in-on-demand/
Problemas WSUS y XP
Si aún tenemos máquinas con windows xp que se tienen que actualizar desde el wsus y no están cogiendo las actualizaciones y aún poniendo el paquete de objetos para la versión del servidor (Group Policy Preference Client Side Extensions for Windows XP (KB943729) )sigue sin actualizar. Podemos mirar en la estación en c:\windows\WindowsUpdate.log para ver de donde vienen el problema.
Para resolverlo podemos cambiar los permisos de los servicios de actualizaciones automáticas (wuaserv) y el servicio de transferencia inteligente en segundo plano (Bits)
sc.exe sdset bits D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)
sc.exe sdset wuauserv D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)
Problemas con las actualizaciones de windows
Problemas con el Proxy
Resetear la configuración del proxy (por ejemplo si nos descargamos los parches de un servidor wsus local)
netsh winhttp reset proxyo bien
netsh winhttp import proxy source=ie
Si sigue fallando probar con :
net stop bits net stop wuauserv reg delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate /f rd /s /q %WINDIR%\SoftwareDistribution gpupdate /force wuauclt /resetauthorization /detectnow
https://wuinstall.com/index.php/blog-list/item/11-force-windows-10-updates-command-line.html
El equipo no aparece en el WSUS
Podemos abrir un terminal y ejecutar el wuauclt.exe con alguna de estas opciones:
- /ResetAuthorization /DetectNow (o /a /d)
- /DetectNow (o /d)
- /ReportNow /DetectNow (o /r /d)
- /UpdateNow
- /ShowWUAutoScan
- /ShowWindowsUpdate
- /CloseWindowsUpdate
- /ShowWU
- /DemoUI
- /IdleShutdownNow
- /ShowOptions
- /SelfUpdateUnmanaged
- /SelfUpdateManaged
- /ResetEulas
- /ShowSettingsDialog
- /RunHandlerComServer
Por ejemplo para actualizar la conexión de la estación al servidor de wsus
wuauclt.exe /resetauthorization /detectnow
Referencias
Otros problemas
Error 7053
Parches fuera de ciclo
Existe una página de Microsoft desde donde podemos bajarnos parches para un KB (Microsoft Knowledge Base) en particular.
Por ejemplo para bajar los parches para el famoso virus WannaCry → http://www.catalog.update.microsoft.com/Search.aspx?q=KB4012598
Referencias
- Lista comandos netsh→ http://support.microsoft.com/kb/242468/es