Powershell 2:计算文件校验和的最佳方法?

Powershell 2:计算文件校验和的最佳方法?

我每小时运行一次脚本来处理一个 CSV 文件。在脚本的开头,如果 CSV 文件没有更改,我需要退出。让我们假装文件时间戳不是一个选项。(我问这个问题是为了教育价值)

我正在考虑提取整个文件并计算其内容的哈希值,如下所示:

$fileData = get-content \path\to\file
$hashCode = $fileData.GetHashCode()

然后我会在每次运行中保存这些内容,如果在后续运行中哈希值相同,则退出我的脚本。

再次假设文件时间戳不可用,有没有更好的方法来做到这一点?

答案1

您最终将使用 System.Security.Cryptography 命名空间来生成该哈希。PowerShell 社区扩展已经为您完成了这项工作。有一个 Get-Hash cmdlet 可返回可用于比较的 HashInfo 对象。

答案2

需要注意的是,Get-HashCode()并非用来作为唯一对象标识符。每次运行它时,它都会有所不同,即使在同一个会话中也是如此。

查看这里这里了解更多信息。

相关内容