Windows: Updates aufräumen

158829630_ad14f8265f_mMan sollte Windows (und auch den Mac, die Linuxe usw.) ja tunlichst immer brav mit den neuesten Updates und Servicepacks versorgen. Blöd ist nur, dass Windows das eher selten aufräumt; m.W. ist der Datenträgerbereinigungsassistent was Updates und Servicepacks betrifft auch eher unbeleckt.

Gerade bei virtuellen Machinen (besonders bei Desktopvirtualisierung in grösserem Ausmaß) oder auch Netbooks ist aber der Platz auf der Platte eher eng, so dass es da öfter mal zu Engpässen kommen kann. So ein Servicepack kann ja mal ein paar hundert MB schwer sein…

Windows legt brav von jedem Update oder Servicepack im Windowsverzeichnis einen (immerhin komprimierten) Ordner namens “$NtUninstallKBxyz” an. Dazu gibts dann noch den Ordner “SoftwareDistribution”, in dem die runtergeladenen Files abgelegt werden.

Klar, man kann über die Systemsteuerung so auch wieder Updates deinstallieren – aber wer macht das schon? Bei fehlerhaften Updates gibts dann eh meistens ein Fehlerbereinigungsupdate….

Also weg mit dem Zeug! Ich hab mir dazu eine kleine Batch geschrieben, die die “$NtUninstallKB”-Verzeichnisse in eine Datei listet und anhand derer die Attribute löscht und die Verzeichnisse dekomprimiert. Danach werden die Verzeichnisse gelöscht.

Danach geht die Batch auf die “SoftwareDistribution” los und fertig ist die Laube.

@echo off
cd %windir%
if exist %windir%\$NtUninstallKB*$ goto Backup-Kill
goto weiter

:Backup-Kill
dir /a:H /b $NtUninstallKB*$ > %windir%\uninstall.txt
for /f %%x in (uninstall.txt) do (attrib %%x -r -s -h)
compact /U /a %windir%\$NtUninstallKB*$
for /f %%x in (uninstall.txt) do (rd %windir%\%%x /q /s)
del %windir%\uninstall.txt
goto next

:weiter

if exist %windir%\Softwaredistribution goto SD-Kill
goto weiter1
:SD-Kill
cd %windir%\Softwaredistribution
rd . /s /q

:weiter1
pause

Das Script kann ruhig regelmässig laufen, denn der Windows-Update-Client weiß natürlich, welche Updates bereits geladen und installiert sind. Werden heruntergeladene aber noch nicht installierte Updates auf diese Weise gelöscht, dann lädt er sie beim nächsten Updatelauf einfach nochmal runter.

Ich hab das jetzt schon lange bei virtuellen Maschinen (Clients und Server) im Einsatz und kann ausser grandiosen Platzgewinnen keine Auswirkungen feststellen ;-)

Bildquelle: Alphasix auf Flickr

,

3 Responses to Windows: Updates aufräumen

  1. eumel 11. Juni 2009 at 23:20 #

    Hört sich interessant und praktisch an das Script! Gleich mal gebookmarkt! Danke dir!

  2. juliaL49 12. Juni 2009 at 10:21 #

    Habe es gerade ausprobiert, da meine Systempartition unter chronischem Speichermangel leidet! Hat noch nicht so viel gebracht, da diese Woche erst die Datenträgerbereinigung durchlief. Die hat anscheinend doch ordentlich gearbeitet :) Aber für die Zukunft werde ich dein Skript sicher öfter brauchen!

  3. Willi 12. Juni 2009 at 21:08 #

    Und noch ein kleiner Hinweis an alle die mit dem WSUS arbeiten. Dieser kann auch die Updates zum Deinstallieren markieren und somit nicht mehr gebrauchte Updates Löschen bzw. Updates von allen Rechnern auf einmal entfernen die Probleme verursachen. Einzige Voraussetzung das Update deinstalliert werden bzw. eine Deinstallation Routine haben.

Hinterlasse eine Antwort