PowerShellコマンドラインでのハッシュ値の比較(3行でOK)
ダウンロードサイトにハッシュ値が掲載されている場合、特に長いと目視での比較が辛くなる時がある。
以前は、エクセルシートに正しい値を貼り付け、計算した値と一致するかを判別させていた。
正しいハッシュ値の書かれたテキストファイルがあれば、PowerShellのコマンドラインだけで簡便にチェックできる方法が分かったので記しておく。
$x = certutil -hashfile [ファイル] md5
$y = cat [正しい値が記載されたファイル]
$x[1] = $y
上記で正しければ
True
が表示される。
背景事情
今回、サクラエディタのバージョンをv2.4.1からv2.4.2にアップしようと久しぶりにgithubサイトに入ったら、「どれをダウンロードする?」、「『zip.md5』ファイルて何?」状態になったが、【ITメディアの記事】などを参考にして、上述のように無事にチェックすることができた。
今回、希にしかダウンロードしないのと7zipをインストールしているがmd5は未対応なので「md5」についてWindowsでのハッシュ値を求める方法をネット検索してcertutilにたどり着く事が多い。
また、PowerShellもDOSコマンドとの差からエラーを吐かれることが多く、コマンドラインでの利用もごく僅かの機能しか使っていなかった。今回、コマンドラインの出力を変数に代入できることを知り、かつ、代入した出力結果が行単位での配列になっていることを知ったので、簡便な方法へとたどり着くことができた。
ポイント
- PowerShellのコマンドラインからの出力結果は、変数に代入できる。
- 複数行の出力結果は、インデックス番号が「0」からスタートする配列変数に入る。
- 変数の内容が等しいかどうかの比較は二項演算子「-eq」にて比較できる。
以下、詳細を含む覚え書きとしての具体例(サクラエディタのバージョンv2.4.2での実行例と各コマンドの意味・内容について)
対象ファイルとmd5の値の入ったフィアルは下記からダウンロードした。
==> サクラエディタダウンロードサイト
以下、念のため、ハッシュ値の一部を伏せ字にしています。
- サクラエディタの該当zipファイルと該当zip.md5ファイルの両方をダウンロード(上図の枠で囲った2つのファイル)
- PowerShellを起動し、ダウンロードした場所へ移動
- 下記コマンドを実行
※内容確認・トレースのため、PowerShell変数への代入前にコマンドライン出力結果を確認する作業を行っています。
certutil -hashfile .\sakura-tag-v2.4.2-build4203-a3e63915b-Win32-Release-Installer.zip md5
【出力結果】
MD5 ハッシュ (対象 .\sakura-tag-v2.4.2-build4203-a3e63915b-Win32-Release-Installer.zip):
f2fff82*****************cc673401
CertUtil: -hashfile コマンドは正常に完了しました。
$x = certutil -hashfile .\sakura-tag-v2.4.2-build4203-a3e63915b-Win32-Release-Installer.zip md5
各行が変数$xの配列($x[0]
, $x[1]
, $x[2]
)に入っていることを確認。
$x[0]; $x[1]; $x[2]
【出力結果】
MD5 ハッシュ (対象 .\sakura-tag-v2.4.2-build4203-a3e63915b-Win32-Release-Installer.zip):
f2fff82*****************cc673401
CertUtil: -hashfile コマンドは正常に完了しました。
上記から目的のハッシュ値が$x[1]
に入っていることを確認。
cat .\sakura-tag-v2.4.2-build4203-a3e63915b-Win32-Release-Installer.zip.md5
【出力結果】
f2fff82*****************cc673401
catコマンドではなくtypeコマンドでもOK。
もし複数行内部に目的ハッシュ値があれば、該当行を配列要素として取り出せば良い。
$y = cat .\sakura-tag-v2.4.2-build4203-a3e63915b-Win32-Release-Installer.zip.md5
$x[1] -eq $y
【出力結果】
True
以上、初めてのQiitaへの投稿で、内容としては個人的な覚え書きメモです。
markdownを使う練習も兼ねています。
参考サイト