Unterschied in Dateien und Ordnern zu zwei verschiedenen Zeitpunkten (Windows)

0

Ich möchte sehen, wie viele Dateien und Ordner geändert wurden (einschließlich der Erstellung, Löschung und Änderung), eine Liste der geänderten Dateien und Ordner mit ihren Größe vorher und nachher.

Gibt es also ein Hilfsprogramm (oder ein Skript?), Das ich zu zwei verschiedenen Zeiten ausführen und dann den Unterschied feststellen könnte?

OrangeSpider
quelle
Dies ist eine sehr spezifische Anfrage, also nicht auf ein Werkzeug aus der Dose. Sie müssen das selbst schreiben. Führen Sie also einige Suchvorgänge mit Ihrer bevorzugten Suchmaschine für jedes Segment Ihres Anwendungsfalls aus. Um ein Skript zu erstellen, testen Sie es. Wenn Sie dann Probleme haben, besuchen Sie uns mit dem Code und den Fehlern. Suchen Sie einfach nach PowerShell-Datei- und Ordnerverwaltung sowie nach Datei- und Ordnerüberwachung. Ein großer Teil davon befindet sich auch in den Hilfedateien Ihres Systems. Schauen Sie einfach nach Get-ChildItem, um loszulegen.
postanote
@postanote danke für den Kommentar. Übrigens, ich bin auch offen für Werkzeuge, die nicht alle Aspekte abdecken, die ich erwähnt habe ...
OrangeSpider
Sie können Treesize verwenden. Es ermöglicht das Speichern eines Schnappschusses der Dateien im System zu einem bestimmten Zeitpunkt und den Vergleich mit einem Schnappschuss aus einem anderen Zeitpunkt.
Lieven Keersmaekers

Antworten:

0

Mit PowerShell ist es nicht zu schwierig, einige Cmdlets zu kombinieren.

  • Get-ChildItem um den Ordner- / Dateibaum in ein Objekt zu bekommen,
  • mit Export-Clixml/Import-Clixml ein Objekt in einer Datei speichern
    (Die XML-Dateien benötigen etwas Platz)
  • und Compare-Object um den neuesten mit dem aktuellen Baum zu vergleichen.

## Q:\Test\2018\12\17\SU_1385185.ps1
$Base = 'C:\Test\'
$ArchiveFolder = $Env:tmp

function Archive-Tree {
    $File = "{0}\Tree_{1:yyyyMMddHHmmss}.CliXML" -f $ArchiveFolder,[datetime]::Now
    Get-ChildItem -Path $Base -Recurse | Export-Clixml $File
    $File
}

## ----- get most recent file Tree_*.clixml
$File = Get-ChildItem "$($Env:tmp)\Tree_*.Clixml" | Select-Object -Last 1
if ($File){
    $Old = Import-Clixml $File
    $New = Import-Clixml (Archive-Tree)
    Compare-Object -Ref $Old -Dif $New -Property FullName,
            Length,LastWriteTime,CreationTime,LastAccessTime |
        Sort-Object FullName,SideIndicator | Format-Table -AutoSize
} else {
    $File = (Archive-Tree)
    "No saved tree, now created as {0}" -f $File
}

Beispielausgabe

FullName              Length LastWriteTime       CreationTime        LastAccessTime      SideIndicator
--------              ------ -------------       ------------        --------------      -------------
C:\test\c_test.clixml 982258 2018-12-17 12:59:27 2018-12-17 12:59:24 2018-12-17 12:59:24 =>
C:\test\c_test.clixml      0 2018-12-17 12:59:24 2018-12-17 12:59:24 2018-12-17 12:59:24 <=
C:\Test\foo.baz         1164 2018-12-17 13:55:05 2018-12-17 13:55:21 2018-12-17 13:55:21 =>

Das SideIndicator <= verweist auf das LHS oder -ReferenceObject ( $OLD )
das SideIndicator => das RHS oder -Differenzobjekt ( $New ).

LotPings
quelle