mrheisenberg
Goto Top

Datenträgerbereinigung-Systemdateien-WindowsUpdate

Moin Leute,

ich bin gerade am verzweifeln... ich habe mich jetzt durch Foren gestöbert, auf der Suche nach einen .ps1 Skript um den Update-Cache zu löschen, siehe Screenshot.

Warum über Powershell?
Wir haben Clients die selten erreichbar sind, und über unser RMM Tool möchte ich dann dieses Skript ausführen damit wir die Probleme mit dem Windows-Update in den Griff bekommen.

Teilweise lassen sich 10H22 oder 11H22 nicht installieren da der Cache Fehlerhafte Dateien enthält (Microsoft it´s not a bug, it´s a feature), ich möchte mich auch nicht immer auf jedes Gerät verbinden und manuell den Task ausführen.

Mein Skript auf .cmd Basis verweigert den Dienst, und dies möchte ich auch nicht unbedingt verwenden, da es sicher schönere Lösungen gibt:

@Echo On
net stop wuauserv
C:
cd %Windir%\SoftwareDistribution
Type del /f /s /q Download
pause 

Wenn wer einen Tipp zwecks Powershell hat, ich würd mich freuen.

Grüße aus dem Verschneiden Österreich.
screenshot 2023-01-23 094512

Content-Key: 5574594709

Url: https://administrator.de/contentid/5574594709

Printed on: April 25, 2024 at 11:04 o'clock

Member: Cleanairs
Solution Cleanairs Jan 23, 2023 updated at 08:56:21 (UTC)
Goto Top
Mitglied: 3063370895
Solution 3063370895 Jan 23, 2023 updated at 09:06:59 (UTC)
Goto Top
Oder in Kurzform:

"bits","wuauserv" | Stop-Service -Force  
Remove-Item -Recurse -Force $env:windir\SoftwareDistribution\Download
"bits","wuauserv" | Start-Service  

Macht das gleiche wie das oben verlinkte Skript nur ohne unnötige Funktionen wie

function StartWUS() {
    Start-Service wuauserv
}
Member: MrHeisenberg
MrHeisenberg Jan 23, 2023 at 09:03:40 (UTC)
Goto Top
Perfekt danke euch, jetzt kann ich mal weitermachen
Member: Crusher79
Solution Crusher79 Jan 23, 2023 at 09:12:55 (UTC)
Goto Top
Member: Crusher79
Crusher79 Jan 23, 2023 at 09:18:53 (UTC)
Goto Top
Zitat von @MrHeisenberg:

Perfekt danke euch, jetzt kann ich mal weitermachen

Achso es gibt auch einen Unterschied zwischen "Fix" und "Bereinigen".

Dism.exe /online /Cleanup-Image /StartComponentCleanup /ResetBase

Die Updates werden ja eine gewissen Zeit vorgehalten. Gerade bei Releas Sprüngen kommt da was zusammen.

SoftwareDistribution ist aber bei Problemen meist mit 1. Anlaufstelle und recht sicher zu löschen/ umzubenennen.


Wenn dir aber mal WinSxS Ordner um die Ohren fliegt , weil zu groß, da hilft es die alten Updates in Nirvana zu schicken.
Member: Cleanairs
Cleanairs Jan 23, 2023 updated at 09:25:29 (UTC)
Goto Top
Zitat von @Crusher79:

Zitat von @MrHeisenberg:

Perfekt danke euch, jetzt kann ich mal weitermachen

Achso es gibt auch einen Unterschied zwischen "Fix" und "Bereinigen".

Dism.exe /online /Cleanup-Image /StartComponentCleanup /ResetBase

Die Updates werden ja eine gewissen Zeit vorgehalten. Gerade bei Releas Sprüngen kommt da was zusammen.

SoftwareDistribution ist aber bei Problemen meist mit 1. Anlaufstelle und recht sicher zu löschen/ umzubenennen.


Wenn dir aber mal WinSxS Ordner um die Ohren fliegt , weil zu groß, da hilft es die alten Updates in Nirvana zu schicken.

Kannst Du das für Greenhors etwas naeher erläutern? Warum DISM und was macht das da genau, was wo ist SoftwareDistribution und WinSxS
Member: Crusher79
Crusher79 Jan 23, 2023 updated at 09:31:36 (UTC)
Goto Top
Hallo,

war nur kurz runter geschrieben:

https://www.heise.de/tipps-tricks/WinSxS-bereinigen-so-entfernen-Sie-alt ...

Manchmal haben wir ja nur 120 GB SSD oder weniger. Irgendwann analysiert man das System vlt. mit TreeSize o.ä. Und dann stellt man fest, dass c:\Windows selber verdammt groß ist. Genauer die Unterordner. Einfach rumfuschen und weglöschen ist ein No-Go. Dafür gibt es obenstehende Verfahren.

Ein weiterer beliebter Punkt ist das Scannen und Reparieren von Fehlern:
https://www.heise.de/tipps-tricks/Windows-10-reparieren-so-geht-s-420845 ...

sfc /scannow && dism /Online /Cleanup-Image /ScanHealth && dism /Online /Cleanup-Image /RestoreHealt

Ich mag ja die PowerShell. Aber dism kann man einfach in Eingabeaufforderung mit Admin-Rechten ausführen - fertig.

Die Verkettung mit && erspart einen das Warten. Die Befehle dauern etwas. In der Zwischenzeit kann man etwas anderes tun ....

Während es bei SoftwareDistribution nur um den "Update Saustall" geht, prüfen und korrigieren die anderen Befehle da noch mehr.

mfg Crusher
Member: aqui
aqui Jan 23, 2023 updated at 09:34:18 (UTC)
Goto Top
https://www.duden.de/rechtschreibung/teilweise
Und Code Tags beim Posten von Scriptcode etc. wäre für alle Beteiligten sehr hilfreich aber FAQs lesen wird klar überbewertet. face-sad
Member: Crusher79
Crusher79 Jan 23, 2023 at 09:36:15 (UTC)
Goto Top
Zitat von @aqui:

https://www.duden.de/rechtschreibung/teilweise
Und Code Tags beim Posten von Scriptcode etc. wäre für alle Beteiligten sehr hilfreich aber FAQs lesen wird klar überbewertet. face-sad

Du hast eine Triggerwirkung. Hab gleich 1-2 Dinge in meiner Antwort korrigiert. Man fühlt sich immer selber so angesprochen face-big-smile
Mitglied: 3063370895
3063370895 Jan 23, 2023 updated at 09:44:18 (UTC)
Goto Top
Zitat von @aqui:
Code Tags

https://deppenleerzeichen.de/
https://de.wikipedia.org/wiki/Leerzeichen_in_Komposita

Wenn schon pedantisch, dann richtig face-smile

On-Topic: DISM wurde auch komplett in Powershell integriert, z.B entspricht
Repair-WindowsImage -Online -RestoreHealth
dem DISM-Befehl
dism /Online /Cleanup-Image /ScanHealth

https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/u ...
Member: Cleanairs
Cleanairs Jan 23, 2023 updated at 09:43:24 (UTC)
Goto Top
mfg Crusher

Sehr nice. Danke für den Background!
Member: Crusher79
Crusher79 Jan 23, 2023 at 09:46:56 (UTC)
Goto Top
Zitat von @Cleanairs:

Sehr nice. Danke für den Background!

War auch nur, weil mehr oder weniger zu Topic passend!

Oft reicht wie gesagt eine "resetten" des Ordners. Eine "Bereinigung" ist dies nur zum Teil. Über die GUI erreicht man nicht alle Komponenten.

Wenn es dann immer noch hakt oder zu einen Rollback kommt können die "Fixe" helfen. Zumindest lassen sich Update Probleme damit eingrenzen. Es kann aber durchaus sein, dass die Festplatte einen weg hat und/ oder Filsystem korrupt ist.

Normal hilft auch immer ein Blick in die Logs. Wo genau Windows drüber stolpert. Der "sanfte Hozhammer" mit SoftwareDistribution löschen hilft aber sehr, sehr oft.

@MrHeisenberg
Sollte es immer noch nicht gehen, so kann man die FeatureUpdates auch manuell laden und ausführen. Gerade bei den Punkt gibt es wieder einen anderen Workaround. Ist aber auch auf vielen Seiten beschrieben.
Member: Cleanairs
Cleanairs Jan 23, 2023 updated at 10:55:43 (UTC)
Goto Top
Zitat von @Crusher79:

sfc /scannow && dism /Online /Cleanup-Image /ScanHealth && dism /Online /Cleanup-Image /RestoreHealt

Die Verkettung mit && erspart einen das Warten. Die Befehle dauern etwas. In der Zwischenzeit kann man etwas anderes tun ....


Für powershell statt && ein ; nehmen
sfc /scannow; dism /Online /Cleanup-Image /ScanHealth; dism /Online /Cleanup-Image /RestoreHealth

Hier allerdings im Output:
Die Option "restorehealt" wird in diesem Kontext nicht erkannt.  
Weitere Informationen finden Sie in der Hilfe.
Mitglied: 3063370895
3063370895 Jan 23, 2023 at 10:57:39 (UTC)
Goto Top
Zitat von @Cleanairs:
Hier allerdings im Output:
Die Option "restorehealt" wird in diesem Kontext nicht erkannt.  
Weitere Informationen finden Sie in der Hilfe.

Da fehlt ein "h" am Ende face-smile
Member: Cleanairs
Cleanairs Jan 23, 2023 at 11:05:19 (UTC)
Goto Top
Zitat von @chaot1coz:

Zitat von @Cleanairs:
Hier allerdings im Output:
Die Option "restorehealt" wird in diesem Kontext nicht erkannt.  
Weitere Informationen finden Sie in der Hilfe.

Da fehlt ein "h" am Ende face-smile

Oh mannnn. Danke :D
Member: MrHeisenberg
MrHeisenberg Jan 23, 2023 at 11:28:22 (UTC)
Goto Top
Also irgendwie will schon der stop-service nicht... zum Mäusemelken
screenshot 2023-01-23 122728
Mitglied: 3063370895
3063370895 Jan 23, 2023 at 11:28:57 (UTC)
Goto Top
Zitat von @MrHeisenberg:

Also irgendwie will schon der stop-service nicht... zum Mäusemelken

Powershell als Admin starten.
Member: Crusher79
Crusher79 Jan 23, 2023 at 11:33:14 (UTC)
Goto Top
Zitat von @MrHeisenberg:

Also irgendwie will schon der stop-service nicht... zum Mäusemelken

Du kannst oben die Optionen fürs Scannen und Reparieren anwenden ....

Du könntest schauen wie man Update Offline macht. Herunterladen und Starten.

Bsp.: https://praxistipps.chip.de/windows-10-offline-update-durchfuehren-so-ge ...


Würde aber erstmal nach Fehlern scannen und die beheben lassen - so fern möglich. Dann weiter sehen.
Member: MrHeisenberg
MrHeisenberg Jan 23, 2023 at 11:33:28 (UTC)
Goto Top
Zitat von @chaot1coz:

Zitat von @MrHeisenberg:

Also irgendwie will schon der stop-service nicht... zum Mäusemelken

Powershell als Admin starten.

läuft als admin
Mitglied: 3063370895
3063370895 Jan 23, 2023 at 11:37:16 (UTC)
Goto Top
Zitat von @MrHeisenberg:
läuft als admin

Eigenartig. Bekomme genau diesen Fehler, wenn ich es in einer nicht-admin PS probiere:
2ioedon59x
Member: MrHeisenberg
MrHeisenberg Jan 23, 2023 updated at 11:38:49 (UTC)
Goto Top
Zitat von @chaot1coz:

Zitat von @MrHeisenberg:
läuft als admin

Eigenartig. Bekomme genau diesen Fehler, wenn ich es in einer nicht-admin PS probiere:
2ioedon59x



Mein Fehler, habe es als "Domain-Admin" ausgeführt
Member: MrHeisenberg
MrHeisenberg Jan 23, 2023 at 12:03:20 (UTC)
Goto Top
stop-service -name "bits" -force  
stop-service -name "wuauserv" -force  
stop-service -name "appidsvc" -force  
stop-service -name "cryptsvc" -force  

Remove-Item -Force -Recurse C:\Windows\SoftwareDistribution\Download\*

#rm -r -fo C:\Windows\SoftwareDistribution\Download\*

Start-Service -Name "bits"   
Start-Service -Name "wuauserv"  
Start-Service -Name "appidsvc"   
Start-Service -Name "cryptsvc"   

get-service "bits"  
get-service "wuauserv"  
get-service "appidsvc"  
get-service "cryptsvc"  

Sollte eigentlich funktionieren, die Services werden gestoppt, danach sollte der Ordner gelöscht werden, Services starten wieder, und eine Kontrolle ob die Dienste wieder laufen ist eingebaut. Schaut nicht schön aus, aber sollte funktionieren, nur der "Recurse" macht Probleme, ich bekomme folgende Meldung retour "siehe Bild"

LG
screenshot 2023-01-23 130300
Member: Crusher79
Crusher79 Jan 23, 2023 at 12:16:17 (UTC)
Goto Top
Dann benennen den Ordner nach SoftwareDistribution nachdem STOP einfach um. Geht das, ist alles "tot gelegt". Fertig.
Member: MrHeisenberg
MrHeisenberg Jan 23, 2023 at 12:26:39 (UTC)
Goto Top
Zitat von @Crusher79:

Dann benennen den Ordner nach SoftwareDistribution nachdem STOP einfach um. Geht das, ist alles "tot gelegt". Fertig.

Wär eine Option, nur ist mein Problem dass ich ein PS-Skript brauche um unser RMM-Tool zu füttern, irgendwo habe ich einen Fehler, aber ich komm nicht drauf... im nächsten Leben werde ich Millionär...
Member: MrHeisenberg
MrHeisenberg Jan 23, 2023 at 14:34:19 (UTC)
Goto Top
So, nach langem Testen hab ich den "Fehler" gefunden, das Skript arbeitet wie es soll, könnte man sicherlich schöner verpacken:

stop-service -name "bits" -force  
stop-service -name "wuauserv" -force  
stop-service -name "appidsvc" -force  
stop-service -name "cryptsvc" -force  

Remove-Item -Force -Recurse C:\Windows\SoftwareDistribution\Download\*

Start-Service -Name "bits"   
Start-Service -Name "wuauserv"  
Start-Service -Name "appidsvc"   
Start-Service -Name "cryptsvc"   

get-service "bits"  
get-service "wuauserv"  
get-service "appidsvc"  
get-service "cryptsvc"  

Der Ordner wo Windows seine Updates hinlegt wird dadurch geleert.

Der erste Teil stoppt die Dienste welche den Zugriff blockieren, danach wird der Ordner geleert, im weiteren Schritt werden die Dienste wieder gestartet und es wird eine Kontrolle durchgeführt ob die Dienste wieder laufen.

Mein Fehler war dass ich dieses Skript nicht als "System" ausgeführt habe, ich hoffe mit diesem "Stümperhaften" Teil ;) kann ich den einen oder anderen eine Grundlage bieten um ein besseres Teil zu Basteln.

Lieben dank an alle

Grüße
Member: Crusher79
Crusher79 Jan 23, 2023 updated at 14:43:04 (UTC)
Goto Top
Remove-Item "C:\path\to\dir" -Recurse -Force  

Was mit ""?

Remove-Item "C:\Windows\SoftwareDistribution\Download\*" -Force -Recurse   

Oben die PowerShell Scripte kann man auch laden/ modifizieren. Oder du klaust dir da die Teile raus.

Ich sehe es auch gerade nicht.

Das hier hab ich oben schon erwähnt! Ist nur eine PS Datei und die kann man so starten! Nicht interaktiv. Ausgabe ist nur was es gerade tut und Reboot Hinweis.

Da wird der Ordner umbenannt. Kannst du das nciht einfach integrieren? Du kannst die PS1 ja direkt laden, bzw. speichern. Der Inhalt ist ja Klartext. Wenn dir die DLL Reg zu viel ist, schmeiß den Part raus. ABER das Ding rennt wie eine Eins...


https://www.powershellgallery.com/packages/Reset-WindowsUpdate/1.20/Cont ...

update-fix.ps1 hab ich es benannt. Selbst das ist egal. Das sollte doch eig. vollkommen reichen und auf keinen "Hammer" bei dir laufen.

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 


Ausgabe:
PS C:\share> .\update_fix.ps1
1. Stopping Windows Update Services...
2. Remove QMGR Data file...
3. Renaming the Software Distribution and CatRoot Folder...
4. Removing old Windows Update log...
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)
6. Registering some DLLs...
7) Removing WSUS client settings...
FEHLER: Der angegebene Registrierungsschlüssel bzw. Wert wurde nicht gefunden.
FEHLER: Der angegebene Registrierungsschlüssel bzw. Wert wurde nicht gefunden.
Der Vorgang wurde erfolgreich beendet.
8) Resetting the WinSock...

Der Winsock-Katalog wurde zurückgesetzt.
Sie müssen den Computer neu starten, um den Vorgang abzuschließen.


Aktuelle WinHTTP-Proxyeinstellungen:

    DirectAccess (kein Proxyserver).

9) Delete all BITS jobs...
10) Attempting to install the Windows Update Agent...
11) Starting Windows Update Services...
12) Forcing discovery...
Process complete. Please reboot your computer.
PS C:\Windows\system32>
Member: MrHeisenberg
MrHeisenberg Jan 23, 2023 at 14:48:34 (UTC)
Goto Top
Zitat von @Crusher79:

Remove-Item "C:\path\to\dir" -Recurse -Force  

Was mit ""?

Er führt mir die auch ohne "" aus, Verzeichnis ist danach leer, und wird nach dem Start der Services wieder befüllt wie Windows die benötigt, danke für deine Tipps, werde weiter daran rumbasteln, learning by doing

Grüße
Mitglied: 3063370895
3063370895 Jan 23, 2023 updated at 14:52:05 (UTC)
Goto Top
Zitat von @MrHeisenberg:

So, nach langem Testen hab ich den "Fehler" gefunden, das Skript arbeitet wie es soll, könnte man sicherlich schöner verpacken:

stop-service -name "bits" -force  
stop-service -name "wuauserv" -force  
stop-service -name "appidsvc" -force  
stop-service -name "cryptsvc" -force  

Remove-Item -Force -Recurse C:\Windows\SoftwareDistribution\Download\*

Start-Service -Name "bits"   
Start-Service -Name "wuauserv"  
Start-Service -Name "appidsvc"   
Start-Service -Name "cryptsvc"   

get-service "bits"  
get-service "wuauserv"  
get-service "appidsvc"  
get-service "cryptsvc"  

Der Ordner wo Windows seine Updates hinlegt wird dadurch geleert.

Der erste Teil stoppt die Dienste welche den Zugriff blockieren, danach wird der Ordner geleert, im weiteren Schritt werden die Dienste wieder gestartet und es wird eine Kontrolle durchgeführt ob die Dienste wieder laufen.

Mein Fehler war dass ich dieses Skript nicht als "System" ausgeführt habe, ich hoffe mit diesem "Stümperhaften" Teil ;) kann ich den einen oder anderen eine Grundlage bieten um ein besseres Teil zu Basteln.

Lieben dank an alle

Grüße

Um das ganze ein bisschen zu komprimieren:

$dienste = "bits","wuauserv","appidsvc","cryptsvc"  

Stop-Service $dienste -force
Remove-Item -Force -Recurse C:\Windows\SoftwareDistribution\Download\*
Start-Service $dienste 
Get-Service $dienste 
Member: Cleanairs
Cleanairs Jan 24, 2023 at 08:37:35 (UTC)
Goto Top
Zitat von @MrHeisenberg:>
Wär eine Option, nur ist mein Problem dass ich ein PS-Skript brauche um unser RMM-Tool zu füttern...

Darf man fragen, welches RMM?
Member: MrHeisenberg
MrHeisenberg Jan 26, 2023 at 14:25:26 (UTC)
Goto Top
Zitat von @Cleanairs:

Zitat von @MrHeisenberg:>
Wär eine Option, nur ist mein Problem dass ich ein PS-Skript brauche um unser RMM-Tool zu füttern...

Darf man fragen, welches RMM?

NinjaOne verwenden wir derzeit
Member: Cleanairs
Cleanairs Jan 26, 2023 at 18:37:58 (UTC)
Goto Top
Ah ok. Überlegen wir anzuschaffen. Oder Artera.