Get-FileHash (Microsoft.PowerShell.Utility)
Get-FileHash
- Модуль:
- Microsoft.PowerShell.Utility
Вычисляет хеш-значение файла, используя указанный хэш-алгоритм.
Синтаксис
Get-FileHash
[-Path] <String[]>
[[-Algorithm] <String>]
[<CommonParameters>]Get-FileHash
[-LiteralPath] <String[]>
[[-Algorithm] <String>]
[<CommonParameters>]Get-FileHash
[-InputStream] <Stream>
[[-Algorithm] <String>]
[<CommonParameters>]Описание
Командлет Get-FileHash вычисляет хеш-значение файла, используя указанный хэш-алгоритм. Хэш-значение — это уникальное значение, соответствующее содержимому файла. Вместо того, чтобы идентифицировать содержимое файла по его имени, расширению или другому обозначению, хэш присваивает содержимому файла уникальное значение. Имена и расширения файлов могут быть изменены без изменения содержимого файла и без изменения значения хеш-функции. Аналогично, содержимое файла можно изменить, не меняя имени или расширения. Однако изменение даже одного символа в содержимом файла меняет хэш-значение файла.
Целью хэш-значений является предоставление криптографически безопасного способа проверки того, что содержимое файла не было изменено. Хотя некоторые алгоритмы хэширования, включая MD5 и SHA1, больше не считаются защищенными от атак, цель безопасного алгоритма хеширования состоит в том, чтобы сделать невозможным изменение содержимого файла — ни случайно, ни злонамеренной или несанкционированной попыткой. - и поддерживать то же значение хеш-функции. Вы также можете использовать хеш-значения, чтобы определить, имеют ли два разных файла одинаковое содержимое. Если хеш-значения двух файлов идентичны, содержимое файлов также идентично.
По умолчанию командлет Get-FileHash использует алгоритм SHA256, хотя можно использовать любой алгоритм хэширования, поддерживаемый целевой операционной системой.
Примеры
Пример 1. Вычисление хеш-значения файла.
В этом примере используется командлет Get-FileHash для вычисления хеш-значения для файла /etc/apt/sources.list. Используемый алгоритм хэширования — SHA256 по умолчанию. Вывод передается командлету Format-List для форматирования вывода в виде списка.
Get-FileHash /etc/apt/sources.list | Format-List
Algorithm : SHA256
Hash : 3CBCFDDEC145E3382D592266BE193E5BE53443138EE6AB6CA09FF20DF609E268
Path : /etc/apt/sources.listПример 2. Вычисление хеш-значения для файла ISO.
В этом примере используется командлет Get-FileHash и алгоритм SHA384 для вычисления хэш-значения для файла ISO, загруженного администратором из Интернета. Вывод передается командлету Format-List для форматирования вывода в виде списка.
Get-FileHash C:\Users\user1\Downloads\Contoso8_1_ENT.iso -Algorithm SHA384 | Format-List
Algorithm : SHA384
Hash : 20AB1C2EE19FC96A7C66E33917D191A24E3CE9DAC99DB7C786ACCE31E559144FEAFC695C58E508E2EBBC9D3C96F21FA3
Path : C:\Users\user1\Downloads\Contoso8_1_ENT.isoПример 3. Вычисление хэш-значения потока
В этом примере мы используем System.Net.WebClient для загрузки пакета со страницы выпуска Powershell. На странице выпуска также документируется хэш SHA256 каждого файла пакета. Мы можем сравнить опубликованное значение хеш-функции с тем, которое мы вычисляем с помощью Get-FileHash.
$wc = [System.Net.WebClient]::new()
$pkgurl = 'https://github.com/PowerShell/PowerShell/releases/download/v6.2.4/powershell_6.2.4-1.debian.9_amd64.deb'
$publishedHash = '8E28E54D601F0751922DE24632C1E716B4684876255CF82304A9B19E89A9CCAC'
$FileHash = Get-FileHash -InputStream ($wc.OpenRead($pkgurl))
$FileHash.Hash -eq $publishedHash
TrueПример 4. Вычисление хеша строки
PowerShell не предоставляет командлет для вычисления хэша строки. Однако вы можете записать строку в поток и использовать параметр InputStream Get-FileHash, чтобы получить хеш-значение.
$stringAsStream = [System.IO.MemoryStream]::new()
$writer = [System.IO.StreamWriter]::new($stringAsStream)
$writer.write("Hello world")
$writer.Flush()
$stringAsStream.Position = 0
Get-FileHash -InputStream $stringAsStream | Select-Object Hash
Hash
----
64EC88CA00B268E5BA1A35678A1B5316D212F4F366B2477232534A8AECA37F3CПараметры
-Algorithm
Указывает криптографическую хэш-функцию, которая будет использоваться для вычисления хеш-значения содержимого указанного файла или потока. Криптографическая хэш-функция обладает тем свойством, что невозможно найти два разных файла с одинаковым значением хеш-функции. Хэш-функции обычно используются с цифровыми подписями и для обеспечения целостности данных. Допустимые значения этого параметра:
- SHA1
- SHA256
- SHA384
- SHA512
- MD5
Если значение не указано или параметр опущен, значением по умолчанию является SHA256.
По соображениям безопасности MD5 и SHA1, которые больше не считаются безопасными, следует использовать только для простой проверки изменений и не следует использовать для генерации хеш-значений для файлов, требующих защиты от атак или подделки.
- Тип :
String
- Принятые значения:
SHA1, SHA256, SHA384, SHA512, MD5
- Позиция:
1
- Значение по умолчанию:
SHA256
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-InputStream
Указывает входной поток.
- Тип :
Транслировать
- Позиция:
0
- Значение по умолчанию:
None
- Необходимый:
True
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-LiteralPath
Указывает путь к файлу. В отличие от параметра Path, значение параметра LiteralPath используется точно так, как оно введено. Никакие символы не интерпретируются как подстановочные знаки. Если путь содержит escape-символы, заключите путь в одинарные кавычки. Одинарные кавычки указывают PowerShell не интерпретировать символы как escape-последовательности.
- Тип :
String[]
- Псевдонимы:
PSPath, LP
- Позиция:
0
- Значение по умолчанию:
None
- Необходимый:
True
- Примите ввод конвейера:
True
- Принимайте подстановочные знаки:
False
-Path
Указывает путь к одному или нескольким файлам в виде массива. Допускаются подстановочные знаки.
- Тип :
String[]
- Позиция:
0
- Значение по умолчанию:
None
- Необходимый:
True
- Примите ввод конвейера:
True
- Принимайте подстановочные знаки:
True
Входы
Строка
В этот командлет можно передать строку, содержащую путь к файлу.
Выходы
Microsoft.PowerShell.Utility.FileHash
Этот командлет возвращает объект, представляющий путь к указанному файлу, значение вычисленного хеша и алгоритм, используемый для вычисления хеша.