Windows-Update-Funktion mit Powershell reparieren
15. Februar 2018Bei Windows-Clients treten oftmals Probleme auf, etwa wenn Änderungen am System vorgenommen werden. Dazu zählen beispielsweise Fehler die nach dem Einspielen von Patches und Hotfixes auftreten, falls Anwendungen aktualisiert werden und danach nicht mehr funktionieren, oder wenn neue Treiber installiert wurden, und danach für Probleme sorgen.
Besonders beim Einspielen von Windows-Updates treten gehäuft Fehler auf, obwohl Microsoft diese zunächst auf „Herz und Nieren“ prüft. Allerdings lassen sich im Vorfeld nicht immer alle Wechselwirkungen vorhersehen, die unterschiedlichste Konfigurationen aus Hardware, Treiberversionen, Betriebssystem und Anwendungen mit sich bringen.
Lassen sich bestimmte Updates nicht aufspielen, oder die Windows-Update-Funktion selbst sorgt für „Ärger“, können die Systembetreuer auf unterschiedliche Weise reagieren:
- Systemwiederherstellung vornehmen,
- Microsoft-Fix-IT-Tools nutzen,
- Workarounds im Netz suchen und testen,
- Backup einspielen,
- Windows-Update-Dienste deaktivieren und erneut startet,
- Windows-Update manuell reparieren oder
- Windows neu aufsetzen.
Alternativ lohnt sich unter Umständen ein Blick auf das Powershell-Skript von Ryan Nemeth zu werfen. Dieses Skript stoppt alle Windows-pdate-Dienste, und setzt den Kompletten service auf die „Grundeinstellung“ zurück, danach wird der Windows-Update-Dienst selbst aktualisiert, und im Folgenden die entsprechenden Dienste wieder gestartet:
<#
.SYNOPSIS
Reset-WindowsUpdate.ps1 – Resets the Windows Update components
.DESCRIPTION
This script will reset all of the Windows Updates components to DEFAULT SETTINGS.
.OUTPUTS
Results are printed to the console. Future releases will support outputting to a log file.
.NOTES
Written by: Ryan Nemeth
Find me on:
* My Blog: www.geekyryan.com
* Twitter: https://twitter.com/geeky_ryan
* LinkedIn: https://www.linkedin.com/in/ryan-nemeth-b0b1504b/
* Github: https://github.com/rnemeth90
* TechNet: https://social.technet.microsoft.com/profile/ryan%20nemeth/
Change Log
V1.00, 05/21/2015 – Initial version
V1.10, 09/22/2016 – Fixed bug with call to sc.exe
V1.20, 11/13/2017 – Fixed environment variables
#>
$arch = Get-WMIObject -Class Win32_Processor -ComputerName LocalHost | Select-Object AddressWidth
Write-Host "1. Stopping Windows Update Services…"
Stop-Service -Name BITS
Stop-Service -Name wuauserv
Stop-Service -Name appidsvc
Stop-Service -Name cryptsvc
Write-Host "2. Remove QMGR Data file…"
Remove-Item "$env:allusersprofile\Application Data\Microsoft\Network\Downloader\qmgr*.dat" -ErrorAction SilentlyContinue
Write-Host "3. Renaming the Software Distribution and CatRoot Folder…"
Rename-Item $env:systemroot\SoftwareDistribution SoftwareDistribution.bak -ErrorAction SilentlyContinue
Rename-Item $env:systemroot\System32\Catroot2 catroot2.bak -ErrorAction SilentlyContinue
Write-Host "4. Removing old Windows Update log…"
Remove-Item $env:systemroot\WindowsUpdate.log -ErrorAction SilentlyContinue
Write-Host "5. Resetting the Windows Update Services to defualt settings…"
"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)"
Set-Location $env:systemroot\system32
Write-Host "6. Registering some DLLs…"
regsvr32.exe /s atl.dll
regsvr32.exe /s urlmon.dll
regsvr32.exe /s mshtml.dll
regsvr32.exe /s shdocvw.dll
regsvr32.exe /s browseui.dll
regsvr32.exe /s jscript.dll
regsvr32.exe /s vbscript.dll
regsvr32.exe /s scrrun.dll
regsvr32.exe /s msxml.dll
regsvr32.exe /s msxml3.dll
regsvr32.exe /s msxml6.dll
regsvr32.exe /s actxprxy.dll
regsvr32.exe /s softpub.dll
regsvr32.exe /s wintrust.dll
regsvr32.exe /s dssenh.dll
regsvr32.exe /s rsaenh.dll
regsvr32.exe /s gpkcsp.dll
regsvr32.exe /s sccbase.dll
regsvr32.exe /s slbcsp.dll
regsvr32.exe /s cryptdlg.dll
regsvr32.exe /s oleaut32.dll
regsvr32.exe /s ole32.dll
regsvr32.exe /s shell32.dll
regsvr32.exe /s initpki.dll
regsvr32.exe /s wuapi.dll
regsvr32.exe /s wuaueng.dll
regsvr32.exe /s wuaueng1.dll
regsvr32.exe /s wucltui.dll
regsvr32.exe /s wups.dll
regsvr32.exe /s wups2.dll
regsvr32.exe /s wuweb.dll
regsvr32.exe /s qmgr.dll
regsvr32.exe /s qmgrprxy.dll
regsvr32.exe /s wucltux.dll
regsvr32.exe /s muweb.dll
regsvr32.exe /s wuwebv.dll
Write-Host "7) Removing WSUS client settings…"
REG DELETE "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate" /v AccountDomainSid /f
REG DELETE "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate" /v PingID /f
REG DELETE "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate" /v SusClientId /f
Write-Host "8) Resetting the WinSock…"
netsh winsock reset
netsh winhttp reset proxy
Write-Host "9) Delete all BITS jobs…"
Get-BitsTransfer | Remove-BitsTransfer
Write-Host "10) Attempting to install the Windows Update Agent…"
if($arch -eq 64){
wusa Windows8-RT-KB2937636-x64 /quiet
}
else{
wusa Windows8-RT-KB2937636-x86 /quiet
}
Write-Host "11) Starting Windows Update Services…"
Start-Service -Name BITS
Start-Service -Name wuauserv
Start-Service -Name appidsvc
Start-Service -Name cryptsvc
Write-Host "12) Forcing discovery…"
wuauclt /resetauthorization /detectnow
Write-Host "Process complete. Please reboot your computer."
Weitere Informationen finden die Systembetreuer auf der entsprechenden Technet-Seite
Florian Huttenloher