由于Powershell的版本低于4,我无法使用内置的cmdlet Get-FileHash
生成校验和值。
是否有另一种获取或验证文件完整性的方法?
答案 0 :(得分:3)
确定假设您有一个文件项(例如来自Get-ChildItem)
$stream = new-object system.IO.FileStream($item.fullname, "Open", "Read", "ReadWrite")
使用FileStream打开文件以获取流对象。
然后,您可以使用其中一个Crypto类来计算其哈希值:
if ($stream)
{
$sha = new-object -type System.Security.Cryptography.SHA256Managed
$bytes = $sha.ComputeHash($stream)
$stream.Dispose()
$stream.Close()
$sha.Dispose()
$checksum = [System.BitConverter]::ToString($bytes).Replace("-", [String]::Empty).ToLower();
}
最后校验和位于$checksum
,它是一个很好的字符串,可用于比较:
5989b3cdcff6a594b2b2aef7f6288f7727019c037515c2b10627721e707cf613
您可以在System.Security.Cryptography
下使用各种类来计算哈希值,您可以在此处查看可用的内容:https://msdn.microsoft.com/en-us/library/system.security.cryptography(v=vs.110).aspx