【PowerShell】特定のフォルダ配下にあるファイルのMD5ハッシュ値を取得する


この記事はプロモーションを含みます。

PowerShell

ホーム > PowerShell 逆引きリファレンス

WindowsのPowerShellで、指定したフォルダ配下にあるファイルのMD5ハッシュ値を取得する方法を解説します。

フルパスとハッシュ値を取得する

ここでは、フォルダ配下にあるファイルのフルパスとMD5ハッシュ値を取得する方法を説明します。

Get-ChildItem -Path "C:\workspace\folder" -Recurse -File | Select-Object FullName, @{Name="MD5Hash";Expression={(Get-FileHash -Path $_.FullName -Algorithm MD5).Hash}}

コマンドの実行結果です。

FullName                      MD5Hash
--------                      -------
C:\workspace\folder\file1.log 933222B19FF3E7EA5F65517EA1F7D57E
C:\workspace\folder\file1.txt C5053D4DA03789BFBC4BEE760FADE936
C:\workspace\folder\file2.log FA1F726044EED39DEBEA9998AB700388
C:\workspace\folder\file2.txt BA73AD5FC2ED01C25A420738836E432D
C:\workspace\folder\file3.log BA73AD5FC2ED01C25A420738836E432D
C:\workspace\folder\file3.txt 87BE7337CD4B795FDEB99DF8370FEF92

CSV形式で取得する

ここでは、フォルダ配下にあるファイルのフルパスとファイルサイズ、MD5ハッシュ値をCSV形式(カンマ区切り)で取得する方法を説明します。

Get-ChildItem "C:\workspace\folder" -Recurse -File | ForEach-Object { "$($_.FullName),$($_.Length),$( (Get-FileHash $_.FullName -Algorithm MD5).Hash )" }

コマンドの実行結果です。

C:\workspace\folder\file1.log,166,F99AA8B497FF4E645EEB027BA030813A
C:\workspace\folder\file1.txt,265,7F3DCD2B2B7E1C6F5A998F94AD725650
C:\workspace\folder\file2.log,3,FA1F726044EED39DEBEA9998AB700388
C:\workspace\folder\file2.txt,3,BA73AD5FC2ED01C25A420738836E432D
C:\workspace\folder\file3.log,3,BA73AD5FC2ED01C25A420738836E432D
C:\workspace\folder\file3.txt,6,87BE7337CD4B795FDEB99DF8370FEF92

TSV形式で取得する

ここでは、フォルダ配下にあるファイルのフルパスとファイルサイズ、MD5ハッシュ値をTSV形式(タブ区切り)で取得する方法を説明します。
TSV形式であれば、Excelにそのまま貼り付けることが出来るので便利かと思います。

TSV形式であれば、そのままExcelのセルごとに分割して貼り付けることが出来ます。

Get-ChildItem "C:\workspace\folder" -Recurse -File | ForEach-Object { "$($_.FullName)`t$($_.Length)`t$( (Get-FileHash $_.FullName -Algorithm MD5).Hash )" }

コマンドの実行結果です。

こちらの実行結果は、タブ区切りになっていますが、PowerShellのターミナルからコピーすると、タブの部分がスペースに置き換わってしまいます。
テキストファイルにリダイレクトすると、タブ区切りで取得出来ますが、一手間増えてしまいます。
なので、次項では実行した結果を自動でコピーした状態にするコマンドをご紹介したいと思います。

C:\workspace\folder\file1.log   166     F99AA8B497FF4E645EEB027BA030813A
C:\workspace\folder\file1.txt   265     7F3DCD2B2B7E1C6F5A998F94AD725650
C:\workspace\folder\file2.log   3       FA1F726044EED39DEBEA9998AB700388
C:\workspace\folder\file2.txt   3       BA73AD5FC2ED01C25A420738836E432D
C:\workspace\folder\file3.log   3       BA73AD5FC2ED01C25A420738836E432D
C:\workspace\folder\file3.txt   6       87BE7337CD4B795FDEB99DF8370FEF92

TSV形式での取得と結果をコピーする

ここでは、フォルダ配下にあるファイルのフルパスとファイルサイズ、MD5ハッシュ値をTSV形式(タブ区切り)で取得する方法を説明します。
また、取得した結果を自動でコピーします。

Get-ChildItem "C:\workspace\folder" -Recurse -File | ForEach-Object { "$($_.FullName)`t$($_.Length)`t$( (Get-FileHash $_.FullName -Algorithm MD5).Hash )" } | clip

コマンドの実行結果です。
PowerShellのターミナルには何も表示されませんが、
貼り付け(Ctrl + V)することで、以下のような結果を得ることが出来ます。

C:\workspace\folder\file1.log	166	F99AA8B497FF4E645EEB027BA030813A
C:\workspace\folder\file1.txt	265	7F3DCD2B2B7E1C6F5A998F94AD725650
C:\workspace\folder\file2.log	3	FA1F726044EED39DEBEA9998AB700388
C:\workspace\folder\file2.txt	3	BA73AD5FC2ED01C25A420738836E432D
C:\workspace\folder\file3.log	3	BA73AD5FC2ED01C25A420738836E432D
C:\workspace\folder\file3.txt	6	87BE7337CD4B795FDEB99DF8370FEF92

コメント

タイトルとURLをコピーしました