Hallo PS-Gemeinde,
Ausgangssituation:
Zwei Verzeichnisse mit identischer Verzeichnisstrucktur enthalten u.a. Konfigurationsdateien, welche irgendwo in Verzeichnis 2 ab und zu angepasst werden. Ebenso kommen evtl. mal welche dazu.
Anforderung:
1. Evtl. neue Dateien sollen mit vollem Pfad, Dateinamen und Erstellerdatum in eine Logdatei geschrieben werden.
2. Dateien welchen Änderungen aufweisen, sollen erkannt, mit vollem Pfad, Dateinamen, den Änderungen (Genaue Zeile nicht wichtig) und evtl. noch mit dem Änderungsdatum in eine Logdatei geschrieben werden.
Funktioniert:
1. Neue Dateien werden mit Pfad in eine Logdatei geschrieben
2. Änderungen werden mit get-contend erkannt.
Problem:
1. Erkannte Änderungen können nicht mit vollem Pfad und Dateinamen in Logfile ausgegeben werden. Es werden nur die Änderungen angezeigt. (Hauptproblem)
2. Zeitstempel für neue und geänderte Dateien sollten auch mit in den Logfiles erfasst werden. (Wäre schön, ist aber nicht ganz so wichtig).
Da ich im Netz nicht wirklich etwas gefunden habe, wäre ich für jede Idee dankbar!!!
Hier mein Versuch:
$Sourcepath = "\\MEDIA\Multimedia\Source" $Sourcepath2 = "\\MEDIA\Multimedia\Source2" $AllFilesSource = Get-ChildItem $Sourcepath -Recurse $AllFilesSource2 = Get-ChildItem $Sourcepath2 -Recurse $Filter1 = Get-ChildItem $Sourcepath -include "*.txt", "*.ini", "*.xml", "*.vbs", "*.lnk", "*.reg", "htm", "*.bat", "*.cmd", "*.ps1" -Recurse | ForEach-Object { $_.FullName } $Filter2 = Get-ChildItem $Sourcepath2 -include "*.txt", "*.ini", "*.xml", "*.vbs", "*.lnk", "*.reg", "htm", "*.bat", "*.cmd", "*.ps1" -Recurse | ForEach-Object { $_.FullName } $SameAll = Compare-Object -ReferenceObject $AllFilesSource -DifferenceObject $AllFilesSource2 -IncludeEqual -ExcludeDifferent | ForEach-Object {$_.InputObject.FullName} $NewFiles = Compare-Object -ReferenceObject $AllFilesSource -DifferenceObject $AllFilesSource2 | ForEach-Object {$_.InputObject.fullname} >> "c:\NewFiles.log" Compare-Object $(Get-Content $Filter1) $(Get-Content $Filter2)