0
我不能使用内置的cmdlet的Get-FileHash
生成的校验值Powershell的版本低于4获取校验无内置进去,FileHash cmdlet的PowerShell中
有获取或验证的另一种方式文件的完整性?
我不能使用内置的cmdlet的Get-FileHash
生成的校验值Powershell的版本低于4获取校验无内置进去,FileHash cmdlet的PowerShell中
有获取或验证的另一种方式文件的完整性?
OK让我们假设你有(例如,从GET-ChildItem)的文件项
$stream = new-object system.IO.FileStream($item.fullname, "Open", "Read", "ReadWrite")
您打开该文件使用FileStream得到一个流对象。
然后你可以使用加密类之一来计算其哈希:
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
你应该'Dispose()'th e'$ sha'实例以及 –
好点@ MathiasR.Jessen –