これ何て呼びますか Part2

ストレージにある全てのファイルのハッシュ値を計算する方法はWindowsにありますか?やはりWindowsにはないですかね?外部ソフトを入れるしかないのでしょうか?

A 回答 (5件)

> このコマンドには 「C:」 という文字と 「D:」 という文字がありますが、このコマンドではCドライブに対して実行されるのでしょうか?それともDドライブに対して実行されるのでしょうか?(。´・ω・)?



C:\ は、Get-ChildItemの対象なので、C:\ 以下のファイル一覧を取得します。D: もある場合は、ここを D:\ に変えて再度実行して D:\ 以下の一覧も対象にする必要があるというのは回答に書いたとおりです。

D:\File-Hash-list.txt は Out-file の対象なので、ハッシュ値を求めた結果リストをそのファイルに保存します。もちろん、保存ファイルは、別にどこでもいいです。
    • good
    • 1
この回答へのお礼

ありがとう

私はIT知識が皆無に近いのでartooさんの仰っている事がよく分かりませんが、ある程度は理解する事が出来ました、、、。。(。>﹏<。)
ご返信ありがとうございました!( ^ω^)

お礼日時:2023/12/25 18:27

> ファイルが壊れてないかを知るためです!


システムファイルだけならWindows標準で機能があります。ハッシュ値というか署名を利用しているのでしょうが、壊れたファイルを検出して修復までしてくれます。
PowerShellかコマンドプロンプトを管理者モードで開いて
> sfc /scannow
とか
> DISM /Online /Cleanup-image /RestoreHealth
とか。

前者はシステムファイルチェッカーで保護されたシステムファイルが対象です。破損を検出した場合はシステムフォルダ下にあるキャッシュコピーから復元するので、こちらも破損していると復元できません。検出はできるので自分でディスクイメージなどから該当ファイルをコピーしてきて修復します。
後者はWindowsイメージの管理ツールで、Windows Updateを使用して修復に必要なファイルを取得して修復します。

いずれにしてもWindowsのシステムファイルが署名されているからできる話です。通常のファイルだとハッシュ値の変化を検出しても、ファイルが破損したのか、単に編集されたのか区別が付きません。
単に全ファイルのハッシュ値を計算するだけだと、Windows Updateとかアプリケーションの自動更新が働くたびに大量のファイル変更が検出されて、それに紛れてファイル破損を見落とすことになるでしょう。
    • good
    • 1
この回答へのお礼

ありがとう

ご回答ありがとうございました

お礼日時:2023/12/25 14:26

"ファイルが壊れてないかを知るためです!"


→ そのためには、正しいファイルのハッシュ値を知らなければなりませんね。単独であるファイルのハッシュ値は、正常でも異常でもハッシュ値が計算できてしまうので、それだけが分かっても意味はないのではないでしょうか?

それとも、そのストレージにある全てのファイルのハッシュ値を計算しておいて、後から再計算して比較するのでしょうか。一つ一つファイルのハッシュ値を比較するのはかなり大変だと思いますし、全てのハッシュ値の合計では、もし違っていた場合にどのファイルが原因なのかが判りません。

と言う訳で、全てのファイルのハッシュ値を計算する目的と比較する場合の具体的な手段が判りません。ハッシュ値の計算自体はできるようですが、意味があるのでしょうか?

【Windows 11対応】MD5/SHA-1/SHA-256ハッシュ値を計算してファイルの同一性を確認する
https://atmarkit.itmedia.co.jp/ait/articles/0507 …
    • good
    • 1
この回答へのお礼

ありがとう

>一つ一つファイルのハッシュ値を比較するのはかなり大変だと思いますし

やはり外部ソフトに頼るしかないのですね、、(´×ω×`)
ご回答ありがとうございました

お礼日時:2023/12/25 14:23

powershellで、


Get-ChildItem -recurse C:\ | Get-Filehash | Out-file -filepath D:\File-Hash-list.txt -width 10000
とか。ドライブが複数あればそれごとに実行する必要があります。また、もちろん、読み取りアクセス権が無いファイルは無理です。

デフォルトだと、SHA256のハッシュですが、オプションで他のものも使えます。下記参照。
https://learn.microsoft.com/ja-jp/powershell/mod …
    • good
    • 1
この回答へのお礼

ありがとう

>powershellで、
Get-ChildItem -recurse C:\ | Get-Filehash | Out-file -filepath D:\File-Hash-list.txt -width 10000
とか

このコマンドには 「C:」 という文字と 「D:」 という文字がありますが、このコマンドではCドライブに対して実行されるのでしょうか?それともDドライブに対して実行されるのでしょうか?(。´・ω・)?

お礼日時:2023/12/25 14:07

「全てのファイルのハッシュ値を計算する」というのはどのような動作を想定しているのでしょうか?


ファイルを指定してハッシュ値を計算する機能は標準装備されています。
certutil -hashfile <ファイルパス> [ハッシュアルゴリズム]
ここでハッシュ アルゴリズムは MD2 MD4 MD5 SHA1 SHA256 SHA384 SHA512 を指定できます。
全ファイルでもバッチプログラムかパワーシェルスクリプトを書けばできそうですが、出力の整形なども考えるとちゃんとしたアプリケーションを入れた方が簡単でしょうね。
    • good
    • 1
この回答へのお礼

ありがとう

>「全てのファイルのハッシュ値を計算する」というのはどのような動作を想定しているのでしょうか?

ファイルが壊れてないかを知るためです!


>全ファイルでもバッチプログラムかパワーシェルスクリプトを書けばできそうですが、出力の整形なども考えるとちゃんとしたアプリケーションを入れた方が簡単でしょうね

やはり外部ソフトを入れるべきなのですね、、、
ご回答ありがとうございました!

お礼日時:2023/12/23 21:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報