crinax
Goto Top

PowerShell Script: Alte Dateien Filtern und Dateinamen und Letzte Bearbeitung in CSV

Hallo liebe Community,

ich schreibe gerade ein PowerShell Script welches alte Dateien finden soll und dann eine .CSV Datei erstellt in welcher der Dateiname und die letzte Bearbeitung in jeweils einer Spalte zu finden ist. Am besten das ganze noch sortiert nach der ältesten Bearbeitung.

So sieht der Versuch bis jetzt aus:
Get-ChildItem –Recurse -Path $path| where {$_.LastWriteTime –lt $date} | Select-Object Name, LastWriteTime | export-csv -path C:temp\test.csv -encoding ASCII -NoTypeInformation

Problem dabei ist: Es werden mir keine zwei Spalten (Name, LastWriteTime) erstellt sondern nur eine mit der Überschrift: Name"LastWriteTime"

Kann mir da jemand helfen?

Content-ID: 246357

Url: https://administrator.de/forum/powershell-script-alte-dateien-filtern-und-dateinamen-und-letzte-bearbeitung-in-csv-246357.html

Ausgedruckt am: 23.12.2024 um 15:12 Uhr

colinardo
Lösung colinardo 13.08.2014 aktualisiert um 11:20:11 Uhr
Goto Top
Hallo crinaX, Willkommen auf Administrator.de!
Kann ich hier nicht nachvollziehen, das sollte problemlos laufen.
$path = "C:\testordner"  
$date = (get-date).AddDays(-30)
Get-ChildItem $path -Recurse | ?{!$_.PSIsContainer -and $_.LastWriteTime –lt $date} | select Name, LastWriteTime | sort LastWriteTime | export-csv "C:temp\test.csv" -encoding ASCII -NoTypeInformation  
Grüße Uwe
crinaX
crinaX 13.08.2014 um 11:19:57 Uhr
Goto Top
Hallo colinardo,

vielen Dank für die schnelle Antwort. Allerdings funktioniert es bei leider nicht.

Hier mal kurz mein aktueller Code:

#Benutzereingaben: Pfad, Datum, Pfad für CSV, Name der CSV
$path = read-host "Bitte Pfad eingeben in dem gesucht werden soll: "
$date = read-host "Bitte geben Sie ein Datum ein ab welchem gefiltert werden soll (YYYY-MM-DD): "
$csv_path = read-host "Bitte geben Sie einen Pfad ein in welchem die CSV Datei gespeichert werden soll: "
$csv_name = read-host "Bitte geben Sie einen Namen für die CSV Datei ein: "

#Alle Dateien auf Datum überprüfen und wenn älter als X dann in CSV schreiben
Get-ChildItem $path –Recurse| where {$_.LastWriteTime –lt $date} | Select-Object Name, LastWriteTime | sort LastWriteTime | export-csv -path C:temp\test.csv -encoding ASCII -NoTypeInformation


Ergebnis wenn ich die CSV mit Excel öffne:
A1: Name,"LastWriteTime"
A2: 2013KW_33_Nr2.doc,"21.08.2013 13:52:20"
colinardo
Lösung colinardo 13.08.2014 aktualisiert um 11:31:50 Uhr
Goto Top
Das geht schon wenn du für Excel ein Semikolon als Delimiter verwendest !
export-csv "C:temp\test.csv" -encoding ASCII -NoTypeInformation -delimiter ";"
erst dann erkennt Excel die Spalten automatisch!
crinaX
crinaX 13.08.2014 um 11:26:58 Uhr
Goto Top
Oh super. Vielen Dank. Das war die Lösung face-smile

Hätte jetzt noch eine kleine weitere Frage:
Ist es möglich, dass er den Pfad der Datei noch mit in die selbe Spalte schreibt?
Beispiel Spalte Name:
C:\temp\test.txt
colinardo
Lösung colinardo 13.08.2014 aktualisiert um 11:31:52 Uhr
Goto Top
abä sichä, einfach select Name, LastWriteTime durch select FullName, LastWriteTime ersetzen face-wink