我运行脚本来每小时处理一个CSV文件。 在脚本开始时,如果CSV文件没有改变,我需要退出。 假设文件时间戳不是一个选项。 (我问这个问题的教育价值)
我正在考虑在整个文件中混淆并计算内容上的散列,如下所示:
$fileData = get-content \path\to\file $hashCode = $fileData.GetHashCode()
然后我会保存这些内容从运行到运行,如果后续运行中的散列相同,则退出我的脚本。
有没有更好的方法来做到这一点,假设文件时间戳不可用?
您将最终使用System.Security.Cryptography命名空间来生成该散列。 PowerShell社区扩展已经为您完成了这项工作。 有一个Get-Hash cmdlet返回一个HashInfo对象,可以用来进行比较。
有一件事要注意, Get-HashCode()并不意味着被用作唯一的对象标识符。 每次运行时都会有所不同,即使在同一个会话中也是如此。
点击这里和这里获取更多信息。