Wiederkehrender Fehler bei Windows Update-Installation

Vor kurzem stand ich bei einem Windows Server 2012 R2 vor der Herausforderung, dass sich ein bestimmtes Windows Update auf biegen und brechen nicht installieren ließ. Die Installation schlug bei jedem neuen Versuch fehl. Neustarts, abgesicherter Modus, oder Zurücksetzen der lokalen Update-Datenbank des System brachten keinen Erfolg. Auch das manuelle Installieren brachte den gleichen Fehler hervor.

Ein Blick in das CBS.log [C:\Windows\Logs\CBS\CBS.log], welches die letzten Komponenten der Windows Update-Installation aufzeichnet, brachte diesen Fehlercode hervor: 0x800f0831

Nach weiterer Befassung mit diesem Fehlercode, erhielt ich die Erkenntnis, dass ein vorheriges Update scheinbar nicht ordnungsgemäß installiert wurde. im Updateverlauf des betroffenen Systems jedoch, wird das entsprechende Update als „erfolgreich installiert“ deklariert. Der Vorgang der Installation scheint abgeschlossen, es ist allerdings so, dass bestimmte Bestandteile dieses Updates fehlen und nicht registriert wurden. Stichwort: „Store corruption, manifest missing for package:…“ und „CBS_E_STORE_CORRUPTION“ und CBS Failed to execute execution chain.

Um nun in der Update-Chronologie fortfahren zu können, muss dieses Update zunächst ordnungsgemäß installiert werden. Erst dann können nachfolgende Updates, also die Updates die bei der Installation aktuell in einen Fehler laufen, erfolgreich installiert werden.

Ich habe daraufhin ein Skript geschrieben, welches das CBS.log nach entsprechendem Wortlaut durchsucht und durch die „Trim-Funktion“ das letzte, fehlerhafte Update Paket ausliest und darstellt. Außerdem wird die Ausgabe gleich durch den Download-Link im Update-Katalog ergänzt. So kann es unmittelbar heruntergeladen und erneut installiert werden. ist die Installation erfolgreich, kann mit den regulären Updates fortgefahren werden. Das Skript bezieht sich aber ausschließlich auf diesen bestimmten Fehler bzw. Wortlaut. Sollten also andere Fehler bei der Installation vorliegen, so wird es keine Hilfestellung bieten.

#function to trim strings
function Trim-Length {
param (
    [parameter(Mandatory=$True,ValueFromPipeline=$True)] [string] $Str
  , [parameter(Mandatory=$True,Position=1)] [int] $Length
)
    $Str[0..($Length-1)] -join ""
}


#Read the last failed update string from Update-CBS-Log
$KbString = ((Select-String -Path $env:windir\Logs\CBS\*.log -Pattern 'Store corruption, manifest missing for package:') -split "_")[-1] | select-object -Last 1


#Check if string is valid
if (!$KbString) {
	Write-Host "";
	Read-Host "No specific missing update-manifests and failures were found, please press enter to abort the script-process...";
	exit
}

if ($KbString.StartsWith("KB")) {
	Write-Host "The string is valid";
} else {
	Write-Host "";
	Read-Host "No specific missing update-manifests and failures were found, please press enter to abort the script-process...";
	exit
}


#trim the string after eight letters
$FailedInstallationKb = $KbString | Trim-Length 9


#Show the failed update
cls
Write-Host "";
Write-Host "The following Windows Update was not installed correctly or the update manifest is missing: " -NoNewline; Write-Host $FailedInstallationKb -ForegroundColor Yellow;
Write-Host "";
Write-Host "Please download the Windows Update at the following link and install it again:";
Write-Host "https://catalog.update.microsoft.com/v7/site/Search.aspx?q=$FailedInstallationKb" -ForegroundColor Green;
Write-Host "";
Write-Host "After manually re/installing the failed update showing above, you can proceed with the installation of the regular updates." -ForegroundColor Yellow;
Write-Host "";
pause

Ich empfehle das Skript wie immer zunächst in einer PowerShell ISE auszuführen. Aber auch das direkte Ausführung als .ps1 Datei ist möglich. Viel Erfolg damit.

In den nächsten Wochen werden ich ergänzend zum Thema „Fehlerhafte Windows Updates“ einen separaten Artikel veröffentlichen.

Leon Gawinski

System Engineer Softwarebereich Microsoft

Empfohlene Beiträge

Ein Kommentar

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Empfehlungen
Schließen
Schaltfläche "Zurück zum Anfang"