2019-02-21

PowerShell: Вычисление контрольных сумм файлов

Как только необходимо вычислить контрольную сумму файла мы сразу прибегаем к использованию стороннего программного обеспечения. Самое популярное из которых HashTab. Программа выполнена в виде плагина Windows, и добавляет возможность вычисления контрольных сумм при просмотре свойств файла. Но что делать если контрольные суммы необходимо вычислить для группы файлов? Справиться с подобной задачей поможет PowerShell.



Содержание




PowerShell


PowerShell позволяет вычислить контрольные суммы для одного файла, или для группы файлов. Поддерживает алгоритмы MACTripleDES, MD5, RIPEMD160, SHA1, SHA256, SHA384, SHA512. Может вывести полученные данные в удобном отчете в текстовом виде или в форматах html, xml, csv, json.


Вычисление Контрольных Сумм


Вычислить контрольную сумму файла(ов) можно с помощью командлета Get-FileHash.

Для одного файла, полная команда будет выглядеть так:

# Вычисление контрольной суммы MD5
Get-FileHash 3.jpg -Algorithm MD5


Параметр -Algorithm задает алгоритм вычисляемого хеша. В данном случае выбран алгоритм MD5 (список всех возможных алгоритмов см. выше). Если выполнить команду не указывая данный параметр, то по умолчанию будет выбран алгоритм SHA256.


Для вычисления контрольных сумм нескольких файлов, достаточно указать соответствующую файловую маску. К примеру, вычислим контрольные суммы для всех файлов *.jpg:

# Вычисление контрольной суммы MD5 для всех файлов JPG текущего каталога
Get-FileHash *.jpg -Algorithm MD5


Если файлы разных расширений, или вовсе без них, то можно просто перечислить их через запятую.

# Вычисление контрольной суммы MD5 определенных файлов
Get-FileHash 1.jpg,text.txt -Algorithm MD5


В данном примере, выполнено вычисление контрольной суммы для файлов 1.jpg и text.txt.

Через запятую, можно перечислять не только конкретные файлы, но и маски файлов.

# Вычисление контрольной суммы MD5 для всех файлов JPG и TXT текущего каталога
Get-FileHash *.jpg,*.txt -Algorithm MD5


И последнее, вычислить контрольные суммы всех файлов в текущем каталоге можно указав в качестве файловой маски знак звездочки "*".

# Вычисление контрольной суммы MD5 для всех файлов текущего каталога
Get-FileHash * -Algorithm MD5



Вывод Полученных Данных в Указанном Формате


По умолчанию, вывод информации в PowerShell выполняется в окно консоли в виде таблицы. Полученный результат, при необходимости, можно преобразовать в указанный формат, а именно html, xml, csv, json.

Делается это с помощью передачи результатов выполнения командлетов предыдущего раздела, через конвейер, командлетам ConvertTo-HtmlConvertTo-XmlConvertTo-Csv, ConvertTo-Json.

Преобразование вывода к формату HTML.

# Конвертация вывода к формату HTML
Get-FileHash * -Algorithm MD5 | ConvertTo-Html

# Конвертация вывода к формату HTML и запись в файл E:\out.html
Get-FileHash * -Algorithm MD5 | ConvertTo-Html > E:\out.html


Полученный файл, можно просмотреть в веб-браузере.


Преобразование вывода к формату XML.

# Конвертация вывода к формату XML
Get-FileHash * -Algorithm MD5 | ConvertTo-Xml -As String

# Конвертация вывода к формату XML и запись в файл E:\out.html
Get-FileHash * -Algorithm MD5 | ConvertTo-Html > E:\out.html


Преобразование вывода к формату CSV.

# Конвертация вывода к формату CSV
Get-FileHash * -Algorithm MD5 | ConvertTo-Csv

# Конвертация вывода к формату XML и запись в файл E:\out.csv
Get-FileHash * -Algorithm MD5 | ConvertTo-Csv > E:\out.csv


Преобразование вывода к формату JSON.

# Конвертация вывода к формату JSON
Get-FileHash * -Algorithm MD5 | ConvertTo-Json

# Конвертация вывода к формату XML и запись в файл E:\out.csv
Get-FileHash * -Algorithm MD5 | ConvertTo-Json > E:\out.json



Сравнение Хешей


Сравнить полученный хеш с эталонным,  PowerShell так же может. Реализация такой возможности будет осуществлять с помощью командлета Where-Object.

К примеру имеется хеш "1C9C3339AB5E58E392588A15CD2FC174". Попробуем определить есть ли файл с подобным хешем в тестовой папке.

# Проверка наличия файла с указанным хешем в текущей директории
Get-FileHash * -Algorithm MD5 | Where-Object -Property Hash -eq "1C9C3339AB5E58E392588A15CD2FC174"


Файлы с таким же хешем будут присутствовать в выводе команды.


Итог


Использовать PowerShell для вычисления контрольных сумм файлов, не так сложно как кажется. Учитывая возможность проверки групп файлов, или всех файлов в указанной директории, с последующим сохранением полученного вывода в необходимом формате, мы получаем более привлекательный инструмент, по сравнению с тем же HashTab. И самое главное, не нужно ничего скачивать. Все необходимое уже находится в операционной системе Windows.

В статье было рассмотрено: Как вычислить контрольные суммы файлов с помощью PowerShell? Как вычислить контрольную сумму MD5 в PowerShell? Как вычислить контрольную сумму SHA1 в PowerShell? Как вычислить контрольную сумму SHA256 в PowerShell? Как сравнить хеши в PowerShell?

Комментариев нет :

Отправка комментария