Benutzer mit den meisten Antworten
Script um Dateien in Ordnern zu suchen welche älter sind als X Tage

Frage
-
Hallo Zusammen
ich bin Windowspowershell user anfänger und habe folgendes Problem:
Gerne würde files löschen welche älter sind als X Tage aber in speziellen foldern liegen.
Meine Folderstruktur sieht wie folgt aus:
Ordner
c:\tmp
inhalt tmp
PS C:\tmp> get-childitem
Verzeichnis: C:\tmp
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 24.11.2014 09:26 test
-a--- 24.11.2014 07:34 171 delete_files_older_then_x_days.ps1
-a--- 24.11.2014 08:25 164 Find_Folder.ps1
-a--- 24.11.2014 08:59 871 Powershell_README.txt
im Ordner test hat es wiederum 3 Folder
PS C:\tmp> cd test
PS C:\tmp\test> ls
Verzeichnis: C:\tmp\test
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 24.11.2014 09:08 456
d---- 24.11.2014 09:26 456 - Kopie (2)
d---- 24.11.2014 09:26 geko
Mein Problem:
Gerne würde ich alle Dateien löschen welche älter als 30 Tage sind und im Ordner geko liegen.
Wichtig hierbei der Ordner geko könnte aber auch auch noch zusätzlich in anderen Subfoldern liegen. Also finde alle Dateien welche in einem Ordner liegen der geko heisst und älter als 30 Tag sind!
Das habe ich versucht.
get-childitem "c:\tmp" -recurse | where { $_.lastwritetime -lt (Get-Date).AddDays(-5) -and -not $_.psiscontainer -and $_.name -like "geko" } | remove-item -verbose -recurse -whatif
leider funktioniert das nicht was mache ich falsch?
Besten Dank für Euer Feedback
Antworten
-
Hallo Gèrard!
Ich habe deine Anforderungen nochmal in ruhe gelesen und habe sie nun verstanden (glaube ich).
In deinem Where Filter machst du widersprüchliche angaben!
Geko ist ein Ordner und du sagst in dem filter das du keine Ordner haben möchtest!
Hier musst du 2 Filter benutzen, erst die Ordner mit dem Namen Geko heraus filtern, dann die Dateien in diesen Ordnern.
Get-Childitem 'C:\tmp' -recurse | Where-Object { $_.psiscontainer -and ($_.Name -eq 'geko')} | Get-ChildItem -Recurse | Where-Object {($_.lastwritetime -lt (Get-Date).AddDays(-5)) -and (-not $_.psiscontainer) } | Remove-Item -verbose -recurse -whatif
PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
auf der deutschsprachigen PowerShell Community
Mein 21 Teiliger PowerShell Video Grundlehrgang
Deutsche PowerShell Videos auf Youtube
Folge mir auf:
Twitter | Facebook | Google+- Als Antwort vorgeschlagen Peter Kriegel Dienstag, 25. November 2014 10:54
- Als Antwort markiert Teodora MilushevaModerator Donnerstag, 27. November 2014 07:17
-
- Als Antwort markiert Teodora MilushevaModerator Donnerstag, 27. November 2014 07:18
-
Der Thread kann geschlossen werden.siehe hier:
PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
auf der deutschsprachigen PowerShell Community
Mein 21 Teiliger PowerShell Video Grundlehrgang
Deutsche PowerShell Videos auf Youtube
Folge mir auf:
Twitter | Facebook | Google+- Als Antwort markiert Teodora MilushevaModerator Donnerstag, 27. November 2014 07:18
Alle Antworten
-
Du drückst dich sehr missverständlich aus!
Ich denke die Lösung ist einfacher als du denkst!
Durchsuche einfach nur in dem Ordner Geko!
get-childitem "c:\tmp\test\geko" -recurse | Where-Object { $_.lastwritetime -lt (Get-Date).AddDays(-5) } | remove-item -verbose -recurse -whatif
PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
auf der deutschsprachigen PowerShell Community
Mein 21 Teiliger PowerShell Video Grundlehrgang
Deutsche PowerShell Videos auf Youtube
Folge mir auf:
Twitter | Facebook | Google+- Bearbeitet Peter Kriegel Dienstag, 25. November 2014 06:08
-
Hallo Gèrard!
Ich habe deine Anforderungen nochmal in ruhe gelesen und habe sie nun verstanden (glaube ich).
In deinem Where Filter machst du widersprüchliche angaben!
Geko ist ein Ordner und du sagst in dem filter das du keine Ordner haben möchtest!
Hier musst du 2 Filter benutzen, erst die Ordner mit dem Namen Geko heraus filtern, dann die Dateien in diesen Ordnern.
Get-Childitem 'C:\tmp' -recurse | Where-Object { $_.psiscontainer -and ($_.Name -eq 'geko')} | Get-ChildItem -Recurse | Where-Object {($_.lastwritetime -lt (Get-Date).AddDays(-5)) -and (-not $_.psiscontainer) } | Remove-Item -verbose -recurse -whatif
PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
auf der deutschsprachigen PowerShell Community
Mein 21 Teiliger PowerShell Video Grundlehrgang
Deutsche PowerShell Videos auf Youtube
Folge mir auf:
Twitter | Facebook | Google+- Als Antwort vorgeschlagen Peter Kriegel Dienstag, 25. November 2014 10:54
- Als Antwort markiert Teodora MilushevaModerator Donnerstag, 27. November 2014 07:17
-
- Als Antwort markiert Teodora MilushevaModerator Donnerstag, 27. November 2014 07:18
-
Der Thread kann geschlossen werden.siehe hier:
PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
auf der deutschsprachigen PowerShell Community
Mein 21 Teiliger PowerShell Video Grundlehrgang
Deutsche PowerShell Videos auf Youtube
Folge mir auf:
Twitter | Facebook | Google+- Als Antwort markiert Teodora MilushevaModerator Donnerstag, 27. November 2014 07:18