Foley60528 0 Geschrieben 13. Oktober 2017 Melden Teilen Geschrieben 13. Oktober 2017 Servus,ich würde gerne ein Temp Skript nutzen um einen Firmeninternen Ordner alle 30 tage zu bereinigenSkript löscht die Daten und schreibt eine .txt mit dem namen der gelöschten Dateien.Ich würde es gerne erweitern um den Pfad in dem er gelöscht hat und das datum der löschung.Desweiteren würde ich das ganze gerne ein wenig schöner aussehen lassen, erstmal eine csv draus machen, und dann auch mit spalten arbeiten.Spalte 1 , LöschdatumSpalte 2, PfadSpalte 3 ,Name #### TEMP ORDNER BEREINIGEN ÄLTER 30 TAGE samt Info #### ######################################################## ### Vorgabe: ### Alle Dateien aus TEMP löschen, die älter als 30 Tage sind. Das Alter entsteht durch die letzte Bearbeitung ### Danach sollen alle leeren Ordner ebenfalls gelöscht werden. ### Variablen ### $now = Get-Date $days = -30 #letzte x Tage $diff = {$_.LastAccessTime -le $now.AddDays($days) -and -not ($_.PSIsContainer)} $path = "\\netclient273\d$\Temp" ### Vor Archivierung bestehende alte Daten where $diff einlesen ### $datas = gci $path -recurse -force | Where $diff ### Daten älter als x löschen ### Remove-Item $datas.FullName -Force -ErrorAction SilentlyContinue ### Hinweis auf Archiv Ordner für alle alten Daten ### foreach ($data in $datas) { ### Checken, ob die Dateien entfernt wurden ### $testifdata = Test-Path $data.FullName ### Wenn Dateien entfernt ($false), dann in Datei schreiben dass sie gelöscht wurden ### if ($testifdata -eq $false) { ### neue Variablen ### $actualpath = $data.DirectoryName ### checken ob Übersicht über gelöschte Dateien bereits besteht, wenn nicht anlegen ### $actualpathtest = Test-Path -Path "$actualpath\Gelöschte Dateien.csv" if ($actualpathtest -eq $False) { echo "Gelöschte Dateien:" > "$actualpath\Gelöschte Dateien.csv" } ### Name der Datei in 'Gelöschte Dateien' schreiben ### $deletedatacontent = "$data,$acutalpath,$now" Add-Content "$actualpath\Gelöschte Dateien.csv" -Value $deletedatacontent } ### Danach leere Ordner löschen ### $folders = Get-ChildItem $path -Force -Recurse -Directory foreach ($folder in $folders) { $directoryInfo = Get-ChildItem $folder.FullName -Force | Measure-Object If ($directoryInfo.count -eq 0) { $folderpath = $folder.FullName Remove-Item $folderpath -Force } } } hatte testweise mal eine csv angelegt , war vorher alles txt.Kennt sich da jemand mit aus? und kann mir helfen :) Interessant wäre auch das verhalten des Last Access Attributs, hat jemand damit Erfahrungen geamcht ?http://www.mcseboard.de/topic/211469-temp-ordner-bereinigung-via-last-access-time-und-ps/ Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 13. Oktober 2017 Melden Teilen Geschrieben 13. Oktober 2017 (bearbeitet) Hallo, ich fände es richtig supi, wenn Du bitte beim nächsten mal den Code auch als Code formatierst. Dann lässt er sich leichter lesen und verstehen und lange Zeilen werden im Zweifelsfall auch nicht umgebrochen. ;) Deine Aufgabe würde ich so anfangen: $Path = '\\netclient273\d$\Temp' $Age = -30 $FileList = New-Object System.Collections.Generic.List[object] Get-ChildItem -Path $Path -File -Recurse -Force -ErrorAction SilentlyContinue | Where-Object {$_.LastAccessTime -le (Get-Date).AddDays($Age)} | ForEach-Object { $newobj = [PSCustomObject]@{ Date = (Get-Date).Date Name = $_.BaseName Path = $_.DirectoryName LastAccessTime = $_.LastAccessTime Length = $_.Length } $FileList.Add($newobj) #Remove-Item -Path $_.FullName -Force -ErrorAction SilentlyContinue } Die auskommentierte Zeile solltest Du dann natürlich noch ent-auskommentieren ... ;) Jetzt hast Du also den Ordner schon mal bereinigt und kannst dann mit den gesammelten Daten weiter verfahren, wie Du es gerne möchtest. Z.B.: $FileList | Format-Table -AutoSize um einfach schon mal zu gucken... oder ... $FileList | Export-Csv -Path 'Pfad zu Deiner Lieblings-CSV-Datei' -Delimiter ';' -Encoding UTF8 -NoTypeInformation -Append .... oder, oder, oder ... bearbeitet 13. Oktober 2017 von BOfH_666 Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.