Я пытаюсь написать сценарий Windows PowerShell. Мне нужно получить хеш файла из всех файлов в дереве каталогов.
Это то, что я получил до сих пор:
Get-ChildItem -Path "c:\temp\path" -Recurse -Force -Attributes !Directory | % {Get-FileHash $_.Fullname} | Out-File "c:\temp\report_file.txt"
Файл c:\temp\report_file.txt
выглядит примерно так:
Algorithm Hash Path
--------- ---- ----
SHA256 E3B0C44298...E4649B934CA495991B7852B855 c:\temp\path\report1.txt
SHA256 7B989C1C95...6756624B3887E501DCC377DB23 c:\temp\path\report2.txt
SHA256 EA0155401C...A6D44F1DEBB95E401AEFF4F908 c:\temp\path\report3.txt
SHA256 06DAA0E452...32E3F3104EA4564EAB67CA6A0A c:\temp\path\report4.txt
**SHA256 9C7C9FEA96...45F460BA9015C8F0A5CA830B6B c:\temp\path\report5.txt**
Все отлично работает.
Ожидать:
Я запускаю этот командлет много раз в день. Файлы удаляются и время от времени воссоздаются в этом дереве каталогов. И ... Несколько раз порядок файлов в выходном файле не совпадает.
В приведенном ниже примере файл report5.txt
в файле отчета должен находиться в последней строке, но во второй строке. Я полагаю, это потому, что выбран вариант рекурсии. Этот вариант рекурса мне нужен. Когда я запускаю командлет в каталоге без подкаталогов, результат всегда одинаков. Но когда на каталог с подкаталогами (дерево каталогов) - нет.
Algorithm Hash Path
--------- ---- ----
SHA256 E3B0C44298...E4649B934CA495991B7852B855 c:\temp\path\report1.txt
**SHA256 9C7C9FEA96...45F460BA9015C8F0A5CA830B6B c:\temp\path\report5.txt**
SHA256 7B989C1C95...6756624B3887E501DCC377DB23 c:\temp\path\report2.txt
SHA256 EA0155401C...A6D44F1DEBB95E401AEFF4F908 c:\temp\path\report3.txt
SHA256 06DAA0E452...32E3F3104EA4564EAB67CA6A0A c:\temp\path\report4.txt
Есть ли здесь решение для какой-либо сортировки всех данных по полному пути столбца до того, как данные переданы в файл отчета?