PowerShell 文件校验:用 SHA-256 验证传输与备份副本

本文适用于 Windows Server 2022、2025,示例可在 Windows PowerShell 5.1 中执行。校验适合检查安装包、导出文件和已经完成写入的备份副本。对正在变化的数据库文件或日志,先获取一致的导出或快照,再进行摘要比较,否则结果难以解释。

明确需要证明什么

两个文件大小相同,内容仍可能不同。SHA-256 会根据文件内容计算摘要,适合发现副本与预期文件之间的差异。但摘要一致主要证明所比较内容的一致性,并不会自动证明软件来源可信、没有恶意代码或者备份能够成功恢复。

在开始前,确认原文件路径、副本路径、生成时间和文件所属任务。不要把源文件与目标文件误指向同一路径;这种比较无论执行多少次都不能验证传输。文件名、扩展名或修改时间相同,也不能代替内容校验。

先生成可复查的 SHA-256 结果

# 服务器或本机:替换为需要验证的实际文件
Get-FileHash -LiteralPath 'C:\Transfer\backup.zip' -Algorithm SHA256

结果包含算法、摘要和路径。显式指定 SHA256,能让记录更清楚,也减少不同工具默认值造成的混淆。-LiteralPath 将路径按原样处理,避免文件名中的特殊字符被解释成通配符。命令说明见 Get-FileHash 文档

计算大文件摘要需要读取文件内容,会消耗磁盘与网络存储的读取资源。生产数据库所在磁盘忙碌时,应安排合适窗口,不要同时对全部备份发起大量并行校验。校验命令不修改文件,但资源消耗仍需要考虑。

比较摘要值,并保留失败结果

# 本机或服务器:两个路径必须是不同的实际文件
try {
    $sourceHash = (Get-FileHash -LiteralPath 'D:\Backup\backup.zip' `
        -Algorithm SHA256 -ErrorAction Stop).Hash
    $copyHash = (Get-FileHash -LiteralPath 'E:\Replica\backup.zip' `
        -Algorithm SHA256 -ErrorAction Stop).Hash
    $sourceHash -eq $copyHash
} catch {
    Write-Error ('校验失败,未完成比较:' + $_.Exception.Message)
}

这里比较的是 Hash 字段,不是整个返回对象。只有两次文件读取均成功后才比较摘要。结果为 True 时,表示这次读取到的两份内容摘要一致;出现读取错误则报告校验失败,不把空值当作成功结果。若源与目标位于不同机器,也可分别计算后,将算法、完整摘要和文件身份放在同一份记录中比较。

结果为 False 时先不要删除唯一副本。核对文件是否在计算过程中仍被修改、传输是否完成、选择的是否为同一批次文件,以及是否存在截断或后续加工。排除这些因素后重新传输到新的临时文件,再次校验,通过后才按既定流程替换目标。

校验值也需要可信来源

下载软件时,如果文件与摘要都来自同一个被篡改的位置,攻击者可能同时替换二者。应从软件发布方的正式渠道获取校验值,核对版本、架构和文件名;不要从不明论坛复制一串摘要就认定安装包可信。

对于支持 Authenticode 的程序或脚本,可进一步检查数字签名:

# 本机或服务器:读取签名信息,不运行文件
Get-AuthenticodeSignature -LiteralPath 'C:\Transfer\installer.exe' |
    Select-Object Status, StatusMessage, SignerCertificate

签名状态和签发者信息提供另一类证据,需结合预期发布者与证书信任链判断。没有签名不等于一定恶意,显示有效签名也不是对所有软件行为的保证。相关字段见 Get-AuthenticodeSignature 文档

把校验纳入交付和恢复验证

对每个备份批次记录文件清单、字节大小、算法、摘要、生成时间和校验时间。清单本身应放在受控位置并有独立备份,避免在副本损坏时连正确摘要也找不到。多文件备份还需要确认所有必需文件都在清单中,不能只检查一个压缩包就代表整个任务完整。

内容校验通过后,再进行必要的解压、导入或恢复演练。哈希不能证明数据库导出逻辑完整、压缩包密码可用或恢复步骤齐全。可结合服务器备份与恢复指南制定验收标准;在服务器迁移中,摘要校验则适合作为传输阶段的证据之一。

参考资料

继续阅读

返回天理云文章中心

分享到:
上一篇
Windows Server 时间不同步:时间源、域层级与校验
下一篇
Windows 计划任务不执行:账号、目录与返回码排查
服务中心
企微客服
企微客服
给您高效服务
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意