Neueste oder Älteste Datei mit PowerShell (-first -last)

Oft ist es notwendig, die Neueste oder die Älteste Datei in einem Ordner zu ermitteln. Dies lässt sich ganz einfach mit PowerShell lösen, da es hier die Option -last und -first gibt. Zuvor lässt man alle Dateien eines Ordners auflisten, und das Alter mit LastWriteTime bestimmen.

neueste älteste Datei ermitteln powershell -first -last

Neueste oder Älteste Dateien ermitteln mit PowerShell und -first oder -last

Wie oben schon erwähnt ist es mit PowerShell ganz einfach, die neueste Datei, oder die Älteste Datei eines Ordners ausgeben zu lassen. Auch eine Auflistung von mehreren Dateien ist ganz einfach, oder das ausgeben der Ältesten Datei des aktuellen Tages.

Mein Verzeichnis hat drei Dateien, welche man durch das Änderungsdatum ganz klar nach der Neuesten, aber auch nach der Ältesten Datei unterscheiden kann.

Dateien Änderungsdatum

Zur Vorgehensweise mit Powershell werden mit Get-ChildItem die Dateien des Verzeichnisses ausgelesen, nach der LastWriteTime sortiert und dann mit -first (älteste) oder -last (neuste) Datei gewählt.

$sourcedir = "L:\Taetigkeitserfassung\TE\data\sql"

$filenames = Get-ChildItem $sourcedir | Where-Object {$_.LastWriteTime} | select -last 1

Write-Host $filenames

Hier lautet die Ausgabe “QRY-bestandskundenNF.txt”, da mit dem Parameter -last 1 die Neuste Datei ausgegeben wird. Setzt man übrigens den Parameter auf -last 2, werden die ZWEI neuesten Dateien ermittelt. Möchte man die Älteste Datei im Ordner ermitteln, so wählt man den Parameter -first 1 im PowerShell Script.

Neueste oder Älteste Datei des aktuellen Tages

Natürlich ist es mit PowerShell auch möglich die bestimmte Datei eines bestimmten Tages zu ermitteln. Der häufigste Anwendungsfall ist der Tag HEUTE. Hier hilft uns auch das Änderungsdatum, denn dieses lassen wir auf den heutigen Tag prüfen mit Where-Object {$_.LastWriteTime -gt (Get-Date).date}. Der PowerShell Operator -gt überprüft, ob das Datum größer ist, als das aktuelle Datum um 00:00 Uhr. Um nun die neueste oder älteste Datei des aktuellen Tages zu ermitteln, muss das Script wie folgt angepasst werden.

$sourcedir = "L:\Taetigkeitserfassung\TE\data\sql"

$filenames = Get-ChildItem $sourcedir | Where-Object {$_.LastWriteTime -gt (Get-Date).date} | select -last 1

Write-Host $filenames

In meinem Fall wird nun keine Datei mit PowerShell ermittelt, da keine der drei Dateien vom aktuellen Tag stammt.

Johannes Huber
 

In seiner Freizeit macht Johannes nichts lieber, als für ITnator Beiträge zu schreiben. Input bekommt er hierfür von Problemen in der IT Administration von Servern, Clients und vielen weiteren IT Komponenten.

sidebar
>