はじめに
仕事で作ったファイルのMD5ハッシュ値を求める機会があったので、以前に調べたcertutil関数をあえて使わずに、PowerShellでハッシュ値を求める方法を調べてみました。
コード
-
Get-FileHash
という関数を使うことで、簡単にMD5ハッシュ値を求めることができました。-
-Algorithm
パラメーターでハッシュ化する際のアルゴリズムを指定しない場合、デフォルトのSHA256が使われます。
-
基本構文
Get-FileHash C:\Users\NKOJIMA\Downloads\img.png -Algorithm md5
実行結果
Algorithm Hash Path
--------- ---- ----
MD5 C21F968AF02E47D3EA693DF25D05A74E C:\Users\NKOJIMA\Downloads\img.png
- 以下のように
(得られた結果).hash
と書けば、ハッシュ値だけを求めることもできます。
ハッシュ値だけを求めるコード
(Get-FileHash C:\Users\NKOJIMA\Downloads\img.png -Algorithm md5).hash
実行結果
C21F968AF02E47D3EA693DF25D05A74E
- 以下のようなコードを使えば、指定したフォルダ内のハッシュ値を一度に取得することが出来ます。
指定したフォルダ内のファイルのハッシュ値を求めるコード
$targetDir = "D:\ISO"
$files = Get-ChildItem $targetDir -File
foreach ($file in $files){
Write-Host "$($file): $((Get-FileHash $file.FullName -Algorithm md5).Hash.toLower())"
}
実行結果
AlmaLinux-8.3-beta-1-x86_64-minimal.iso: 3712e5250b92593169f18be198207176
AlmaLinux-8.3-x86_64-dvd.iso: 2734fcd999fbe9d7e81d4dae18db6b7b
AlmaLinux-8.3-x86_64-minimal.iso: 627d7a490adc409a1d3024181d3206f8
CentOS-6.10-x86_64-bin-DVD1.iso: 8ffcc065c3110e6fa0144cb85e4bb4bc
CentOS-6.10-x86_64-bin-DVD2.iso: 8ff3b03bbac2224c56943e8936348a9d
CentOS-7-x86_64-DVD-1908.iso: dc5932260da8f26bcdce0c7ebf0f59ca
CentOS-8.2.2004-x86_64-dvd1.iso: 47dc26d76e566280cc47437fd2466134
ClearOS-DVD-x86_64.iso: 64aa911ac344407b29c94d4855c5cc08
Oracle Linux 7.9.0.0.0_V1003434-01.iso: 41d1e84688c115215b445b7cfcc51d82
Oracle Linux 8.0_V983280-01.iso: 80255acf17ce75725e6322e0eed8197e
Rocky-8.3-x86_64-minimal.iso: f9c635416aa10020b1eb212498ed6e25