转载自http://blogs.msdn.com/powershell/archive/2006/04/25/583225.aspx
function Get-MD5([System.IO.FileInfo] $file = $(throw 'Usage: Get-MD5 [System.IO.FileInfo]'))
{
$stream = $null;
$cryptoServiceProvider = [System.Security.Cryptography.MD5CryptoServiceProvider];
$hashAlgorithm = new-object $cryptoServiceProvider
$stream = $file.OpenRead();
$hashByteArray = $hashAlgorithm.ComputeHash($stream);
$stream.Close();
## We have to be sure that we close the file stream if any exceptions are thrown.
trap
{
if ($stream -ne $null)
{
$stream.Close();
}
break;
}
return [string]$hashByteArray;
}
I think about the only new thing here is the trap statement. It’ll get called if any exception is thrown, otherwise its just ignored. Hopefully nothing will go wrong with the function but if anything does I want to be sure to close any open streams. Anyway, keep this function around, we’ll use it along with AddNotes and group-object to write a simple script that can search directories and tell us all the files that are duplicates. Now… an example of this function in use:
MSH>"foo" > foo.txt
MSH>"bar" > bar.txt
MSH>"foo" > AlternateFoo.txt
MSH>dir *.txt | foreach { get-md5 $_ }
33 69 151 28 248 32 88 177 8 34 154 58 46 59 255 53
54 122 136 147 125 209 249 229 12 105 236 19 140 5 107 169
33 69 151 28 248 32 88 177 8 34 154 58 46 59 255 53
MSH>
本文介绍了一个使用 PowerShell 编写的函数 Get-MD5,该函数用于计算文件的 MD5 哈希值。通过示例展示了如何使用此函数来检查文件是否相同,并提供了处理异常时关闭文件流的方法。
1843

被折叠的 条评论
为什么被折叠?



