PowerShell -recurse, Dateien eines Ordners mit Unterordner löschen

Captium

Cadet 4th Year
Registriert
Apr. 2017
Beiträge
81
Hi Leute,

ich will den "Temp"-Ordner unter Windows mit all seinen ganzen Unterordnern löschen(Zeile3):

PowerShell:
Get-ChildItem | ? { $_.displayname -match "Windows Modules Installer"} | stop-service
Get-ChildItem C:\Windows\Logs\CBS\*persist*.log | Remove-Item
Get-ChildItem C:\Windows\Temp -recurse | Remove-Item
Get-ChildItem | ? { $_.displayname -match "Windows Modules Installer"} | start-service

klappt aber nicht. Wo muss ich das"-recurse" hinsetzen damit es klappt?

Danke schon mal und viele Grüße
 
Wozu Recurse?
Code:
dir ([environment]::GetEnvironmentVariable("temp","machine")) | Remove-Item -Force -Recurse
-WhatIf an Remove-Item für nen Testlauf.
 
Danke erstmal.
Mit Recurse kann man doch die Unterordner mitlöschen. Gibt es keinen weg das mit Recurse zu lösen?
Ergänzung ()

So habe ich es probiert aber es kommt folgendes Fenster:
Unbenannt123.PNG

Genau das sollte ja nicht kommen, der Recurse-Parameter ist ja gesetzt.
Kann mir jeamand bitte helfen?
 
Zuletzt bearbeitet:
Die Meldung kommt nicht von gci sondern von "Remove-Item". Schreib einfach dort nochmal "-recurse -force" dahinter.
 
Dann kommt folgende Fehlermeldung:
Remove-Item : Das Element C:\Windows\Temp\NVIDIA Corporation\NV_Cache\c70a2a2cf0ec7d4f856de448ef9279ff_fce8394c8fd8a83b_4db433aaade57a07_1_0.toc kann nicht
entfernt werden: Der Prozess kann nicht auf die Datei "C:\Windows\Temp\NVIDIA
Corporation\NV_Cache\c70a2a2cf0ec7d4f856de448ef9279ff_fce8394c8fd8a83b_4db433aaade57a07_1_0.toc" zugreifen, da sie von einem anderen Prozess verwendet wird.
In Zeile:1 Zeichen:44
+ ... et-ChildItem C:\Windows\Temp\* -recurse | Remove-Item -recurse -force
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : WriteError: (C:\Windows\Temp...de57a07_1_0.toc:FileInfo) [Remove-Item], IOException
+ FullyQualifiedErrorId : RemoveFileSystemItemIOError,Microsoft.PowerShell.Commands.RemoveItemCommand
 
Damit funktioniert der Befehl schon mal richtig. Jetzt hast du halt das Problem, dass die Dateien im Temp Ordner noch da sie von einem anderen Prozess verwendet werden.
 
Ja aber dann läuft mein Skript ja nie richtig durch, der frägt sonst immer ob ich fortsetzen will.
Wie kann es es so machen das er dann die Daten die im Betrieb sind überspringt?
 
Habe es jetzt so gemacht, funkt aber nicht:
Unbenannt.PNG

Was mache ich falsch?
 
Wie in #2 bereits gesagt...
Code:
dir ([environment]::GetEnvironmentVariable("temp","machine")) | Remove-Item -Force -Recurse -ErrorAction SilentlyContinue
Jetzt noch mit -ErrorAction Parameter.
 
Das geht nur lokal, sobald ich das Skript mit deinem Script-Abschnitt über ein RMM-Tool auf einem anderen Rechner laufen lassen will, geht es nicht.
Sonst klappt alles, er beendet uns startet den TrustedInstaller und löscht die CBS.log Datein, aber der Temp Ordner bleibt unberührt.
 
Zurück
Oben