もくじ
📝 はじめに
PowerShellでファイルを扱っていると、
「このファイルは本当に同じものか?」
「ダウンロードしたファイルが改ざんされていないか確認したい」
「バックアップ前後でファイル内容が変わっていないか調べたい」
という場面が出てきます。
そんなときに使うのが
Get-FileHash です。
ファイルの内容からハッシュ値(指紋のような値)を計算し、
ファイルの同一性や整合性を確認できます。
- ファイルが同一かどうか確認したい
- ダウンロードファイルの改ざんチェックをしたい
- バックアップ前後の差分を確認したい
✅ このコマンドでできること(要点)
- ファイルのハッシュ値を取得できる
- 同一ファイルかどうかを判定できる
- 改ざん・破損チェックに使える
- 複数のハッシュアルゴリズムに対応
✅ Get-FileHash でできること
Get-FileHash は、
ファイルの中身をもとに
一定の計算結果(ハッシュ値)を生成するコマンドです。
同じ内容のファイルであれば、
ファイル名や保存場所が違っても
同じハッシュ値になります。
逆に、1文字でも内容が異なれば
ハッシュ値は変わります。
🧩 基本構文
Get-FileHash ファイルパス
デフォルトでは
SHA256 アルゴリズムが使用されます。
▶ 基本的な使い方(まずこれだけ)
🔹 ファイルのハッシュを取得する
Get-FileHash C:\Work\sample.iso
ハッシュ値・使用アルゴリズム・ファイルパスが表示されます。
🔹 ハッシュ値だけを確認する
(Get-FileHash C:\Work\sample.iso).Hash
比較用途ではこの形がよく使われます。
🛠 よく使われる指定例
🔹 アルゴリズムを指定する
Get-FileHash C:\Work\sample.iso -Algorithm MD5
MD5 / SHA1 / SHA256 / SHA384 / SHA512 などを指定できます。
🔹 SHA1 を指定する
Get-FileHash C:\Work\sample.iso -Algorithm SHA1
公開されているチェックサムと
比較するケースでよく使われます。
💼 実務でよく使う使用例(応用)
🔹 2つのファイルが同一か確認する
$hash1 = (Get-FileHash C:\Data\file1.zip).Hash
$hash2 = (Get-FileHash D:\Backup\file1.zip).Hash
$hash1 -eq $hash2
結果が True なら同一ファイルです。
🔹 公開されているハッシュ値と比較する
$expected = "ABC123..."
$actual = (Get-FileHash C:\Download\app.exe -Algorithm SHA256).Hash
$expected -eq $actual
- ダウンロード後の改ざんチェック
- バックアップ整合性の確認
- ログ・証跡管理への活用
🧩 よくある勘違い・つまずきポイント
- ファイル名が同じでも中身が違えばハッシュは異なる
- アルゴリズムが違うと値は比較できない
- 大容量ファイルでは時間がかかる場合がある
- MD5 / SHA1 はセキュリティ用途には非推奨
- フォルダには直接使えない
🔄 cmdとの違いについて
cmd では certutil -hashfile を使いますが、
PowerShell の Get-FileHash は
出力が整理され、
スクリプトで扱いやすいのが特徴です。
⚠ エラー・うまく動かないときの確認ポイント
- 指定したファイルが存在しているか
- パスの指定ミスがないか
- 他のプロセスが排他的に使用していないか
- アルゴリズム指定が正しいか
🧠 注意点
ハッシュ値は
ファイルの「同一性確認」には非常に有効ですが、
セキュリティ用途では
SHA256 以上を使うのが一般的です。
用途に応じてアルゴリズムを選びましょう。
📌 まとめ
- Get-FileHash でファイルのハッシュを取得できる
- 同一性・改ざんチェックに使える
- SHA256 がデフォルトで安全性も高い
- 比較処理と組み合わせると真価を発揮
🔎 PowerShellコマンドを探す
やりたいことからコマンドを探すこともできます。
- ファイルが同じか確認したい
- ダウンロードの改ざんをチェックしたい
- バックアップの整合性を確認したい
- ハッシュ値を比較したい
- エラーや実行できない原因を調べたい
- PowerShellで検証作業をしたい
- 安全にファイル確認したい
