2017-06-14 45 views

回答

2

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

+1

你应该'Dispose()'th e'$ sha'实例以及 –

+0

好点@ MathiasR.Jessen –