首页/系统/Windows 运维速查/Get-FileHash 计算文件哈希
PowerShell 基础66 条

Get-FileHash 计算文件哈希

计算文件的 SHA256/MD5 等哈希值,用于校验下载完整性、对比两台机器上的文件是否一致。

Windows 运维速查系统更新于 2026-10-13

Get-FileHash 是什么

Get-FileHash 计算文件的哈希摘要(默认 SHA256,可换 MD5/SHA1/SHA384/SHA512),用于校验下载包是否完整、核对两台机器上的同名文件是否一致。它读全文件内容,得到的哈希与官方发布值逐字符比对即可判定;判断文件是否被改动,比看时间戳可靠得多。命令从 PowerShell 4.0 起内置,PowerShell 7 在 Linux/macOS 上同样可用。

基本信息

适用平台Windows PowerShell 4.0+、PowerShell 7(跨平台)
语法Get-FileHash [-Path] <文件> [-Algorithm SHA256|MD5|SHA1|SHA384|SHA512>
默认算法SHA256
输出对象Algorithm / Hash / Path 三个属性
批量方式支持通配符与管道输入文件对象
附加参数-LiteralPath 处理含通配字符的真实文件名

典型使用场景

  • 校验安装包、镜像下载是否完整,排除网络传输损坏
  • 比对生产与备份两份文件的哈希,判断内容是否真的一致
  • 批量盘点目录,找出与基线清单不符的文件
  • 配合 Get-AuthenticodeSignature 做可疑二进制初筛
  • 作为发布物清单的一部分存档,便于事后追责
  • 同步校验:源端导出哈希清单,目标端逐一复算核对

常用示例

常用示例
Get-FileHash .\setup.exe -Algorithm SHA256          # 单个文件,默认 SHA256
Get-FileHash .\setup.exe | Select-Object -ExpandProperty Hash   # 只要哈希串
(Get-FileHash .\a.bin).Hash -eq (Get-FileHash .\b.bin).Hash    # 结果 True 表示内容一致
Get-ChildItem D:\Web -Recurse -File | Get-FileHash -Algorithm MD5 | Export-Csv D:\hash.csv -NoTypeInformation -Encoding UTF8   # 批量导出
$base = Import-Csv D:\hash.csv | Select-Object Path, Hash
Compare-Object $base.Hash (Get-FileHash -LiteralPath $base.Path).Hash   # 与基线清单比对
Get-FileHash .\x.zip, .\y.zip | Format-Table Algorithm, Hash, Path -AutoSize

输出逐列读法

列含义注意点
Algorithm实际使用的算法SHA256 及以上才适合做完整性判定
Hash十六进制摘要字符串比对时不区分大小写
Path被计算文件的完整路径批量管道时用它回定位到具体文件
哈希只证明两份内容相同,不证明文件安全:被篡改的文件也能算出稳定哈希。要验来源,需与官方发布的哈希值比对(注意核对发布渠道本身是否可信),或改看 Authenticode 签名。
MD5/SHA1 出现的初衷是校验传输损坏,不是对抗人为篡改;对外发布与安全判定请用 SHA256 及以上。跨平台核验时注意有些工具默认输出大写、有些是小写,比对前统一大小写。校验大文件时也不要把结果直接贴进工单,长哈希容易被抄错,建议落成文件再核对。

易错点

  • 对运行中的日志、数据库文件直接算哈希会被占用报错,先做卷影副本再取快照文件
  • 用 MD5/SHA1 只能防传输损坏,用作防篡改判定已不安全,对外发布请用 SHA256
  • 批量计算 TB 级文件会持续打满磁盘 IO,安排在非业务时段跑
  • 哈希字符串比对别用肉眼看,用 -eq 或导 CSV 后 Compare-Object 更稳

数据来源与参考

  • Microsoft Learn:Get-FileHash

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌