Mit Powershell Ordner überwachen
Vor kurzem wurde ich gebeten, bei der Überprüfung von Ordnern im Dateisystem zu helfen. Ziel war die Ermittlung, wann in bestimmten Unterverzeichnissen einer Dateistruktur Dateien hinzugefügt oder gelöscht werden.
Zur Erläuterung: In C:\abc liegen viele gleichartige Ordner, die alle einen „A-def“ Unterordner haben, der wiederum einen Unterordner „2012“ hat. Für alle in diesen „2012“ Ordnern gefundenen Dateien werden der Dateiname und Zeitstempel in eine CSV Datei geschrieben. Diese kann dann einfach und sehr übersichtlich mit einem Excel-Pivot ausgewertet werden.
# Resette die Ausgabe Clear-History Clear-Host # Ausgabepfad der Datei $outputpath = "c:\FoundFiles.csv" # hier liegen die Ordner cd c:\abc\ # warte x Sekunden bis zum ersten Lauf bzw. zwischen den Läufen. $waitseconds = 1 # wie oft soll gecheckt werden $runs = 1 # zähle die Läufe mit $counter = 0 while($counter -le $runs){ start-sleep -s $waitseconds $counter++ # Zeitstempel $timestamp= get-date -uformat "%Y%m%d-%H:%M" #hole die Liste der Ordner $folders = gci foreach ($i in $folders){ # prüfe in den "A-def" Ordnern, ob "2012" vorhanden ist cd "$i/A-def" if (!(Test-Path -path "2012")){ # no 2012 folder found } else { # lese alle Dateien ein $files = gci "2012" foreach ($j in $files){ # Schreibe Dateiname und Zeitstempel in die Datei, überschreibe nicht. $i.name + "`t" + $timestamp + "`t" + $j.fullname | out-file $outputpath -append -Width 300 } } cd c:\abc\ } } |