benötige Hilfe bei Powershell Script: alle Ordner inkl. Dateien löschen

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smileys
:) ;) :smile: :lol: :hihi: :D :rofl: :muahah: :( :pff: :kopfstreichel: :ohno: :betruebt: :heulen: :kopfkratz: :duckundweg: :o :? :oops: :psst: :sauer: :-P :daumenrunter: :daumen: :dankeschoen: :thx: :dafür: :gähn:
Mehr Smileys anzeigen

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Ansicht erweitern Die letzten Beiträge des Themas: benötige Hilfe bei Powershell Script: alle Ordner inkl. Dateien löschen

Re: benötige Hilfe bei Powershell Script: alle Ordner inkl. Dateien löschen

von Jens1976 » 10.07.2023, 18:12

Eventuell gehts ja mit dem Registrytrick oberhalb. Mit ein bissle Glück kannst da bei einem Neustart wowohl die Ordner als auch gleich das Script dadrin löschen...

Re: benötige Hilfe bei Powershell Script: alle Ordner inkl. Dateien löschen

von Holgi » 10.07.2023, 18:04

Jens1976 hat geschrieben: 10.07.2023, 17:42 Das geht auch nicht, weil das Script ja selber noch läuft.
Tja, grds. bin ich deiner Meinung. Aber so wie das Script jetzt läuft, wird das ausführende Script (eine *.cmd) ja selbst gelöscht.
Dies geschieht wohl durch die Zeile

Code: Alles auswählen

(goto) 2>nul&rd /s /q "%~dp0"
,
oder bereits durch

Code: Alles auswählen

powershell Remove-item -Path "$env:HOMEPATH\Downloads\*" -exclude desktop.ini -force -Confirm:$false -Recurse
.
Da müßte ich noch mal herausfinden.
Es werden nur nicht die Ordner (Unterordner), in denen sich das Script befindet (befand) gelöscht.
Sind dann zwar nur zwei leere Ordner (bei mir im Ordner User\Downloads), aber wäre halt schön, wenn man die noch wegbekäme.

Re: benötige Hilfe bei Powershell Script: alle Ordner inkl. Dateien löschen

von Jens1976 » 10.07.2023, 17:42

Das geht auch nicht, weil das Script ja selber noch läuft. Dann müßte es sich ja selber löschen. Eventuell könnte man das so hinbiegen, das dieser Pfad samt Inhalt beim nächsten Neustart automatisch gelöscht wird. Da läuft das Script ja nicht, also ist die Datei auch nicht geschützt...
Eventuell könnte man da nen Aufruf in der Registry plazieren im "RunOnce" :kopfkratz:
Also Dateien nach einem Neustart kann man folgendermaßen löschen:
Registrypfad

Code: Alles auswählen

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager
Dort einen neuen Eintrag erstellen "Neu> Wert der mehrteiligen Zeichenfolge" im Kontextmenü und folgendermaßen benennen: "PendingFileRenameOperations". Nicht von dem "Rename" irritieren lassen...
Das dann anklicken um die Werteigenschaften zu laden. "\??\Dateipfad" einfügen. "Dateipfad" ist ein Platzhalter. Das ganze kann man dann ja vom Script aus per "Reg add" einfügen. Ob das auch mit Ordnern funktioniert, kann ich nicht sagen, müßte man mal testen...

Re: benötige Hilfe bei Powershell Script: alle Ordner inkl. Dateien löschen

von Holgi » 10.07.2023, 15:02

so, habs jetzt gerade einigermaßen selbst hinbekommen.
Mein Script (Teil einer komplexen cmd-Batch) sieht so aus:

Code: Alles auswählen

taskkill /F /IM explorer.exe 1>NUL 2>NUL & start explorer 1>NUL 2>NUL
cd \
powershell Remove-item -Path "$env:LOCALAPPDATA\Temp\*" -force -Confirm:$false -Recurse
powershell Remove-item -Path "$env:LOCALAPPDATA\OneDrive" -force -Confirm:$false -Recurse
powershell Remove-item -Path "$env:LOCALAPPDATA\Microsoft\Excel" -force -Confirm:$false -Recurse
powershell Remove-item -Path "$env:LOCALAPPDATA\Microsoft\Office" -force -Confirm:$false -Recurse
powershell Remove-item -Path "$env:LOCALAPPDATA\Microsoft\Word" -force -Confirm:$false -Recurse
powershell Remove-item -Path "$env:LOCALAPPDATA\Microsoft\OneDrive" -force -Confirm:$false -Recurse
powershell Remove-item -Path "$env:LOCALAPPDATA\0install.net" -force -Confirm:$false -Recurse


powershell Remove-item -Path "$env:APPDATA\Microsoft\Excel" -force -Confirm:$false -Recurse
powershell Remove-item -Path "$env:APPDATA\Microsoft\Office" -force -Confirm:$false -Recurse
powershell Remove-item -Path "$env:APPDATA\Microsoft\PowerPoint" -force -Confirm:$false -Recurse
powershell Remove-item -Path "$env:APPDATA\Microsoft\Office" -force -Confirm:$false -Recurse
powershell Remove-item -Path "$env:APPDATA\Microsoft\Word" -force -Confirm:$false -Recurse
powershell Remove-item -Path "$env:APPDATA\0install.net" -force -Confirm:$false -Recurse


powershell Remove-item -Path "$env:Public\Pictures\*" -exclude desktop.ini -force -Confirm:$false -Recurse
powershell Remove-item -Path "$env:Public\Music\*" -exclude desktop.ini -force -Confirm:$false -Recurse
powershell Remove-item -Path "$env:Public\Videos\*" -exclude desktop.ini -force -Confirm:$false -Recurse
powershell Remove-item -Path "$env:Public\Documents\*" -exclude desktop.ini -force -Confirm:$false -Recurse
powershell Remove-item -Path "$env:Public\Desktop\*" -exclude desktop.ini -force -Confirm:$false -Recurse
powershell Remove-item -Path "$env:Public\Downloads\*" -exclude desktop.ini -force -Confirm:$false -Recurse

powershell Remove-item -Path "$env:HOMEPATH\Pictures\*" -exclude desktop.ini -force -Confirm:$false -Recurse
powershell Remove-item -Path "$env:HOMEPATH\Music\*" -exclude desktop.ini -force -Confirm:$false -Recurse
powershell Remove-item -Path "$env:HOMEPATH\Videos\*" -exclude desktop.ini -force -Confirm:$false -Recurse
powershell Remove-item -Path "$env:HOMEPATH\Documents\*" -exclude desktop.ini -force -Confirm:$false -Recurse
powershell Remove-item -Path "$env:HOMEPATH\Desktop\*" -exclude desktop.ini -force -Confirm:$false -Recurse
powershell Remove-item -Path "$env:HOMEPATH\OneDrive\*" -exclude desktop.ini -force -Confirm:$false -Recurse
powershell Remove-item -Path "$env:HOMEPATH\Downloads\*" -exclude desktop.ini -force -Confirm:$false -Recurse

powershell Remove-item -Path "C:\PerfLogs" -force -Confirm:$false -Recurse

(goto) 2>nul&rd /s /q "%~dp0"
Das Einzige was noch stört ist, dass der Ordner und Unterordner, in welchem das Script ausgeführt wird (sagen wir mal %homepath%\Downloads\Test1\Test\ selbst nicht gelöscht werden. Weiß nicht, ob das überhaupt möglich ist.

benötige Hilfe bei Powershell Script: alle Ordner inkl. Dateien löschen

von Holgi » 10.07.2023, 10:39

Hallo Mitstreiter!
Könnte mir jemand von euch Unterstützung bei einem Powershell Script leisten?
Dieses soll alle Ordner und Dateien innerhalb vorgegebener Ordner löschen. Ebenfalls sollen leere Ordner gelöscht werden.
Kurz gesagt: es soll total aufgeräumt werden. Läuffähig unter Windows 11.
Ein Script für leere Ordner löschen habe ich schon mal gefunden.
Vlt. kann da jemand so aufbohren, dass auch nicht leere Ordner gelöscht werden?
Ich weiß: es birgt Gefahren. Dessen bin ich mir bewußt.
Das Script soll sogar ohne Rückfragen die Ordner und Dateien löschen! Inkl. Systemdateien. Ausnahme: die desktop.ini in $rootPath

Hier mal der Ansatz (für leere Ordner):

Code: Alles auswählen

# Root-Verzeichnis, welches durchlaufen werden soll
$rootPath = "C:\Users\Administrator\Documents"

# Alle Elemente im Root-Verzeichnis REKURSIV auslesen
foreach($childItem in (Get-ChildItem $rootPath -Recurse))
{
	# wenn es sich um einen Ordner handelt UND dieser leer ist
	if( ($childItem.PSIsContainer) -and (!(Get-ChildItem -Recurse -Path $childItem.FullName)))
	{
		# leeren Ordner löschen
		Remove-Item $childItem.FullName -Confirm:$false
	}
}
Kann man die Zeile

Code: Alles auswählen

$rootPath = "C:\Users\Administrator\Documents"

noch verallgemeinern? (aktueller User)?
Wie würde das Ganze aussehen, wenn man es ohne Powershell bewerkstelligen wollte?

Nach oben