{{tag>windows update wsus xp parches actualizaciones 7 2008}}
===== 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 /detectnow y deberíamos de ver el equipo en la lista de equipos clientes del servidor WSUS
En caso de que sigamos sin ver el equipo cliente en la consola del servidor, ejecutamos en el equipo cliente los siguiente 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 **administrador**y ejecutar usoclient StartScan
Las 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
https://www.urtech.ca/2018/11/solved-easily-script-windows-10-to-download-install-and-restart-for-windows-updates/
=== 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)
Habilitar e iniciar los servicios wuaserv y bits
==== 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 proxy o 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 ==
* http://www.petenetlive.com/KB/Article/0000591
* http://gonsystem.blogspot.com.es/search/label/Microsoft%20Windows%20Wsus
* http://pauby.com/blog/windows-update-agent-utility-wuauclt-exe/
==== Otros problemas ====
* https://techcommunity.microsoft.com/t5/configuration-manager-archive/recreating-the-susdb-and-wsus-content-folder-for-a-windows/ba-p/274122
* https://michlstechblog.info/blog/windows-reset-wsus-and-recreate-susdb/
* https://www.cenabit.com/2018/08/mover-los-parches-de-wsus-a-otro-disco/
* forzar el chequeo -> https://pleasework.robbievance.net/howto-force-really-wsus-clients-to-check-in-on-demand/
==== Error 7053 ====
* https://www.wincert.net/windows-server/wsus-error-connection-error-event-id7053/
* https://elcegu.wordpress.com/2017/06/08/windows-server-2012r2-wsus-y-el-error-7053-system-nullreferenceexception/
==== Parches fuera de ciclo ====
Existe una página de Microsoft desde donde podemos bajarnos parches para un [[http://www.catalog.update.microsoft.com|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 ====
* http://social.technet.microsoft.com/Forums/windowsserver/en-US/f3fb4c50-4fa5-42a1-9ee6-f77c273233ba/wsus-30-xp-clients-not-updating-automatically-servers-updating-ok?forum=winserverwsus
* Lista comandos netsh-> http://support.microsoft.com/kb/242468/es
* http://www.sysadmit.com/2013/12/windows-update-solucionar-problemas.html
* https://bloginspanish.wordpress.com/2016/06/18/wsus-usarlo-sin-dominio-y-algunos-consejos/
* https://helpdeskgeek.com/windows-10/how-to-force-windows-10-to-install-an-update/
* https://social.technet.microsoft.com/Forums/windows/en-US/51104081-4ed7-4fdd-8b12-5d1f5be532ae/windows-10-feature-update-via-cmd-powershell-or-gpo?forum=win10itprogeneral
* https://www.tenforums.com/tutorials/76207-update-upgrade-windows-10-using-powershell.html
* https://www.maquinasvirtuales.eu/curso-basico-de-powershell-ejecucion-de-scripts/
* http://woshub.com/using-powershell-behind-a-proxy/
* https://win10.guru/use-powershell-to-update-and-upgrade-windows-10/
* https://pureinfotech.com/install-windows-10-update-powershell/
* https://raymii.org/s/blog/Windows_10_Updates_with_PowerShell_PSWindowsUpdpate.html
* https://www.ajtek.ca/wsus/client-machines-not-reporting-to-wsus-properly/
* https://blog.ragasys.es/instalacion-y-configuracion-de-wsus-en-ms-windows-server-2019