Я хотел бы видеть, сколько файлов и папок было изменено (включая созданные, удаленные и измененные), список измененных файлов и папок с их размером до и после.

Так есть ли утилита (или скрипт?) который я мог бы запустить в два разных времени, а затем получить разницу?

1 ответ1

0

С PowerShell не так уж сложно объединить несколько командлетов.

  • Get-ChildItem чтобы получить дерево папок / файлов в объект,
  • использование Export-Clixml/Import-Clixml для сохранения объекта в файле
    (XML-файлы займут немного места),
  • и Compare-Object для сравнения самого последнего с текущим деревом.

## 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
}

Образец вывода

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 =>

SideIndicator <= ссылается на LHS или -ReferenceObject ($OLD),
SideIndicator => RHS или -DifferenceObject ($New).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .