wake-up-neo.com

Verwenden von Get-childitem zum Abrufen einer Liste von Dateien, die in den letzten 3 Tagen geändert wurden

Code, wie es im Moment ist

get-childitem c:\pstbak\*.* -include *.pst | Where-Object { $_.LastWriteTime -lt (get-date).AddDays(-3)} |

Im Grunde versuche ich, eine Liste aller PST-Dateien im obigen Ordner zu erhalten, die darauf basiert, dass sie neuer als 3 Tage alt sind. Ich würde dann gerne die Ergebnisse zählen. Der obige Code zeigt keine Fehler an, führt jedoch zu Null-Ergebnissen (es gibt definitiv PST-Dateien in dem Ordner, die neuer als drei Tage sind.)

10
Trinitrotoluene

Versuche dies:

(Get-ChildItem -Path c:\pstbak\*.* -Filter *.pst | ? {
  $_.LastWriteTime -gt (Get-Date).AddDays(-3) 
}).Count
29
Dave Sexton

Sehr ähnlich den vorherigen Antworten, aber das ist aus dem aktuellen Verzeichnis, sucht nach Dateien und nur nach Dateien, die 4 Tage alt sind. Das war es, was ich für meine Forschung brauchte, und die obigen Antworten waren alle sehr hilfreich. Vielen Dank.

Get-ChildItem -Path . -Recurse| ? {$_.LastWriteTime -gt (Get-Date).AddDays(-4)}
11
LReeder14

Hier ist ein kleines Update zur Lösung von Dave Sexton. Oft benötigen Sie mehrere Filter. Der Parameter Filter kann nur eine einzige Zeichenfolge enthalten, während der Parameter -Include ein Zeichenfolgenarray enthalten kann. Wenn Sie einen großen Dateibaum haben, ist es auch sinnvoll, das Datum nur einmal zu vergleichen, nicht für jede Datei. Hier ist meine aktualisierte Version:

$compareDate = (Get-Date).AddDays(-3)    
@(Get-ChildItem -Path c:\pstbak\*.* -Filter '*.pst','*.mdb' -Recurse | Where-Object { $_.LastWriteTime -gt $compareDate}).Count
2
Yooakim

Ich wollte dies nur als Kommentar zur vorherigen Antwort hinzufügen, aber ich kann es nicht. Ich habe die Antwort von Dave Sexton versucht, hatte jedoch Probleme, wenn der Zähler 1 war. Dies erzwingt ein Array, selbst wenn ein Objekt zurückgegeben wird.

([System.Object[]](gci c:\pstback\ -Filter *.pst | 
    ? { $_.LastWriteTime -gt (Get-Date).AddDays(-3)})).Count

Wenn leer, wird immer noch keine Null zurückgegeben. Das Testen von '-lt 1' funktioniert jedoch. 

1
Jonman364