PowerShellでファイルのハッシュ値を取得し、改ざんチェック!Get-FileHashコマンドの使い方と活用例

ファイルの改ざんや破損を防ぐために「ハッシュ値」を使うことは、セキュリティ対策やシステム管理の基本です。特にファイルの整合性を確認したい場面や、ファイル配布時に「このファイルが本当に正しいものか」を確認したい場合、ハッシュ値の比較は非常に有効な手段です。PowerShellには、このハッシュ値を簡単に取得できる便利なコマンド「Get-FileHash」が標準搭載されています。本記事では、Get-FileHashコマンドの基本的な使い方から、実践的な活用方法、エラー対処までを初心者にも分かりやすく解説します。


Get-FileHashとは?ハッシュ値って何?

Get-FileHashは、PowerShellに標準で搭載されているコマンドレットで、指定したファイルのハッシュ値(デジタル署名のようなもの)を算出するためのものです。ハッシュ値とは、ある特定のアルゴリズム(SHA256など)によって計算されるファイルの要約情報で、ファイルの内容が1バイトでも変わるとハッシュ値も全く異なるものになります。

そのため、ファイルが送信中や保存中に改ざんされたり破損したりしていないかどうかを確認するのに役立ちます。ファイル検証、バックアップ確認、ウイルススキャン後の一致確認などに活用されています。


Get-FileHashの基本的な使い方

まずは最も基本的な使い方を見てみましょう。

Get-FileHash -Path "C:\example\testfile.txt"

このコマンドは、指定したファイルのSHA256ハッシュを取得してくれます。PowerShellの出力は以下のようになります。

Algorithm       Hash                                           Path
--------- ---- ----
SHA256 4A1B2C3D4E5F67890123456789ABCDEF1234567890ABCDEF1234567890ABCDEF C:\example\testfile.txt

デフォルトでは「SHA256」アルゴリズムが使用されますが、他のアルゴリズムにも対応しています。


アルゴリズムの指定方法

ハッシュアルゴリズムには複数の種類があり、用途に応じて使い分けることができます。Get-FileHashでは、-Algorithmパラメーターを使って指定可能です。

使用可能なアルゴリズム:

  • SHA1
  • SHA256(デフォルト)
  • SHA384
  • SHA512
  • MD5(注意:セキュリティ的には非推奨)

例:SHA1を使ってハッシュを取得

Get-FileHash -Path "C:\example\testfile.txt" -Algorithm SHA1

SHA512での取得例:

Get-FileHash -Path "C:\example\testfile.txt" -Algorithm SHA512

それぞれのアルゴリズムでハッシュ値は異なりますので、比較する場合は同じアルゴリズムを使用しましょう。


ハッシュ値の比較による改ざんチェック

2つのファイルが同一であるかどうかを確認するためには、ハッシュ値を比較すればOKです。例えば、オリジナルファイルと受信ファイルが一致しているか確認するには以下のようにします。

$hash1 = Get-FileHash -Path "C:\original\file.txt"
$hash2 = Get-FileHash -Path "C:\downloaded\file.txt"

if ($hash1.Hash -eq $hash2.Hash) {
Write-Output "ファイルは一致しています。"
} else {
Write-Output "ファイルが一致しません。改ざんの可能性があります。"
}

このように自動スクリプトを作成することで、大量のファイル検証にも対応できます。


複数ファイルを一括でチェックする方法

フォルダ内にある複数のファイルのハッシュを一括で取得するには、Get-ChildItemとの組み合わせが便利です。

Get-ChildItem "C:\example" -File | ForEach-Object {
Get-FileHash $_.FullName
}

または、CSVに書き出して記録しておくことも可能です。

Get-ChildItem "C:\example" -File | ForEach-Object {
Get-FileHash $_.FullName
} | Export-Csv -Path "C:\example\hash_list.csv" -NoTypeInformation

このようにすれば、後でファイルの整合性を再確認する際に便利です。


よくあるエラーと対処法

エラー:パスが存在しない

Get-FileHash : パス 'C:\wrong\file.txt' が見つかりません。

→ 対処法:ファイルのパスが正しいか確認してください。相対パスよりも絶対パスを使用するのが安全です。

エラー:権限エラー

システムファイルや管理者権限が必要なファイルに対して実行した場合、アクセスが拒否されることがあります。

→ 対処法:PowerShellを「管理者として実行」してください。


応用:PowerShellスクリプトでハッシュチェックツールを作る

簡単なGUIツールなしのハッシュチェックスクリプトも作成可能です。以下はユーザーにファイルを選ばせ、ハッシュ値を表示するスクリプト例です。

$file = Read-Host "チェックするファイルのパスを入力してください"
$hash = Get-FileHash -Path $file -Algorithm SHA256
Write-Output "ハッシュ値: $($hash.Hash)"

このようにしてスクリプトをバッチ処理に組み込むことで、IT管理業務を効率化することもできます。


まとめ

Get-FileHashは、PowerShellを使ってファイルの整合性を確認したり、改ざんを検知したりするために非常に便利なコマンドです。基本的な使い方から、ハッシュアルゴリズムの変更、複数ファイルの一括チェック、自動化まで幅広く活用できます。

ファイルの信頼性を担保したい場面では、ぜひGet-FileHashを活用してみてください。トラブルを未然に防ぎ、安心・安全なファイル管理が可能になります。PowerShellが使えるなら、セキュリティ対策の第一歩として覚えておく価値は十分にあります。

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