batman00
Goto Top

Mit Powershell Dateien löschen jedoch die ersten Verzeichnisse stehen lassen

Ich hab mal eine Frage - jedoch keien Idee.

Ich möchte das Transferlaufwerk der User jeden Monat löschen lassen - da die das immer vergessen.
Die haben also ein Laufwerk "Tranfer" und darunter hat jeder Mitarbeiter sein Verzeichnis wo er Daten reinkopieren darf.

Jetzt möchte ich den Inhalt der Verzeichnisse der Mitarbeiter löschen - jedoch nicht die Verzeichnisse der Mitarbeiter - damit die diese nicht wieder neu erstellen müssen. Habt ihr da eine Idee?
Die Verzeichniss der Mitarbeiter haben natürlich auch Unterverzeichnisse welche gelöscht werden sollten.

Content-ID: 140003

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

Ausgedruckt am: 22.11.2024 um 13:11 Uhr

CaptainChaos
CaptainChaos 07.04.2010 um 10:28:18 Uhr
Goto Top
du könnest z.B. alle Dateien die älter als 30 Tage alt sind löschen, vielleicht genügt dir das ja schon

(PowerShell)
$Heute = Get-Date
Get-Childitem 'Verzeichnis eines Mitarbeiters' -recurse | Where-Object {($Heute - $_.LastWriteTime).Days -gt 30} | Remove-Item
5t8d1e
5t8d1e 07.04.2010 um 10:43:31 Uhr
Goto Top
Hallo,

wenn ich dich richtig verstanden habe müßte das ungefähr so aussehen:

 
#listet alle Ordner im aktuellen Verzeichnis
$a = gci .\* | where {$_.psisContainer -eq $True}
#durchläuft alle angegeben Ordner und löscht alle Objekte unterhalb
foreach ($b in $a) {Remove-Item $b\* -Recurse}


grüße Torsten
77559
77559 07.04.2010 um 12:07:53 Uhr
Goto Top
Hier als Alternative ein Einzeiler:
Get-ChildItem X:\Transfer | Where {$_.PSIsContainer} | Foreach { Get-ChildItem $_.pspath | Remove-Item -recurse -whatif }

Wenn die ausgabe korrekt erscheint die -whatif Option entfernen.

Gruß
LotPings
batman00
batman00 07.04.2010 um 13:00:14 Uhr
Goto Top
Super. Das flutscht!
Sagt mal - könnt ihr mir ein gescheites Buch über PowerShell empfehlen?
5t8d1e
5t8d1e 07.04.2010 um 13:30:54 Uhr
Goto Top
Hallo,

für Einsteiger ist "Scripting mit WindowsPowershell" von Tobias Weltner gut geeignet. ISBN 978-3-86645-620-4. Desweitern ist auch "PowerShell-Scripting für Administratoren" für Fortgeschrittenen zu empfehlen ist auch von Tobias Weltner.

schau einfach bei www.microsoft-press.de rein, dort soll auch demnächst ein v2 Buch für Einsteiger erscheinen.

grüße
Torsten

ps.: t.weltner gibt auch kurse, hatte einen im Januar besucht und ist für Einsteiger wirklich empfehlenswert.
BrinkMan
BrinkMan 08.04.2010 um 10:07:52 Uhr
Goto Top
Hi,

das klingt ja nach dem was ich suche face-smile
Gibt es auch eine Möglichkeit in dem Unterverzeichnisse einige Ordner aus zulassen, die nicht gelöscht werden sollen?

Löscht das skript auch leere Verzechnise?

Gruss
Hoai
5t8d1e
5t8d1e 08.04.2010 um 13:47:07 Uhr
Goto Top
Ahoi,

ja es geht, hier der "Einzeiler" dazu. Ich persönlich würde es aber in ein Skript packen, weil irgenwann wird es unübersichtlich.

Get-ChildItem $pwd | Where {$_.PSIsContainer} | where {$_.Name -notmatch "Nutzer3|Nutzer1" } | Foreach { Get-ChildItem $_.pspath | Remove-Item -recurse -whatif }  
hier werden die Ausnahmen für die Ornder in 1.Ebene gemacht

where {$_.Name -notmatch "Nutzer3|Nutzer1" }

Wichtig ist das das sobald es z.B. Ordner mit der Nutzer1, Nutzer11, Nutzer3 und Nutzer34 etc. gibt , werden dies ausgelassen.
Ich hoffe meine Erklärung war verständlich.

leere Verzeichnise werden hier auch gelöscht.

Grüße
Torsten

Post scriptum: das entfernen von -whatif nicht vergessen face-wink
BrinkMan
BrinkMan 04.05.2010 um 15:47:04 Uhr
Goto Top
Hi Danke und sorry das ich jetzt erst Anworte, aber das hier ist was untergegangen.
Werde es mal testen

Grüsse
Hoai
Philipp711
Philipp711 06.02.2012 um 16:10:37 Uhr
Goto Top
Hallo!

werden bei diesem Skript auch unterordner gelöscht?? Wenn ich den Threat weiter verfolge werde ich daraus nicht 100%ig schlau...

Sagen wir meine Struktur wäre "C:\Verzeichnis\Ordner_1\text.txt"

Wenn ich bei deinem Skript das "Verzeichnis eines Mitarbeiters" durch "C:\Verzeichnis" ersetzte, wird dann auch der Ordner "Ordner_1" gelöscht oder nur die "text.txt"???

Danke !!!!