たった1行で PowerShell でファイルのハッシュ値を取得する

2021年8月19日木曜日

PowerShell

t f B! P L

PowerShell でファイルのハッシュ値を取得する方法です。PowerShell v4 からは Get-FileHash コマンドレットが追加されたため、たった1行でファイルのハッシュ値が取得できます。

Get-FileHash を使ってみる

Get-FileHash コマンドレットの使い方は次のとおり。

Get-FileHash path/to/file

【POINT】
ファイルの内容から一意のハッシュ値を求めます。つまり、ファイル名や拡張子などを変更してもハッシュ値に変化はありません。

MD5, SHA1 などのアルゴリズムを指定する

Get-FileHash コマンドレットは、デフォルトでは「SHA256」のアルゴリズムでハッシュ値を生成する。これ以外のアルゴリズムでハッシュ値を生成する場合は、-Algorithm パラメータにハッシュアルゴリズムを指定します。

次の例は、ハッシュアルゴリズムを「MD5」に指定してファイルのハッシュ値を取得例です。

Get-FileHash -Algorithm MD5 path/to/file

また、使用できるアルゴリズムは次の通りである。

  • SHA1
  • SHA256
  • SHA384
  • SHA512
  • MD5

文字列のハッシュ値を取得するには?

Get-FileHash コマンドレットは、基本的にはファイルのハッシュ値を取得するための用途で使用するが、Stream 型での入力もできるため、文字列のハッシュ値を取得することもできる。

文字列のハッシュ値を取得する場合は、一旦 MemoryStream 上に文字列を展開して Get-FileHash コマンドレットに渡すことで取得ができる。

$stream = [IO.MemoryStream]::new([Text.Encoding]::UTF8.GetBytes("ハッシュ値にした文字列"))
Get-FileHash -InputStream $stream -Algorithm MD5

■ 実行結果

Algorithm       Hash                                                                   Path
---------       ----                                                                   ----
MD5             8D96CD60662151D28ADD7A90CC39C2AF
スポンサーリンク

QooQ