I posted a question on Monday about how I can calculate SHA1 hash within powershell。
结果代码如下:
$file = 'C:\Zip\File.zip'
$sha1 = New-Object System.Security.Cryptography.SHA1CryptoServiceProvider
[System.BitConverter]::ToString( $sha1.ComputeHash([System.IO.File]::ReadAllBytes($file)))
这段代码完美无缺,完成了我需要它做的事情,但目前我必须指定我想要计算SHA1哈希值的文件。有没有什么办法可以让它来计算'zip'文件夹中每个文件的哈希值。
我过去两天一直试图通过使用循环等来做这件事,我只是没有移动到任何地方。我的PowerShell技能令人震惊并没有帮助。
非常感谢任何帮助。
答案 0 :(得分:0)
所以基本上,你只想
C:\Zip\
和您希望了解如何使用ForEach循环(也可以缩写形式表示,以便与管道一起使用,如:$var | % {<#do this for each #>}
)。
您可以在互联网上阅读有关ForEach循环的更多信息 - 我非常幸运地研究PowerShell主题的两个网站是TechNet和Hey, Scripting Guy! Blog。我建议检查一下,然后再读。
这应该是一个好的开始:
$zips = Get-ChildItem 'C:\Zip\' -Filter *.zip
$sha1 = New-Object System.Security.Cryptography.SHA1CryptoServiceProvider
foreach ($file in $zips) {
$return = "" | Select Name, Hash
$return.name = $file.Name
$return.hash = [System.BitConverter]::ToString($sha1.ComputeHash([System.IO.File]::ReadAllBytes($file.FullName)))
Write-Output $return
}