2014-12-04 104 views
-1

I posted a question on Monday about how I can calculate SHA1 hash within powershell
由此得到的代碼如下:Powershell V2.0 SHA1計算

$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技能令人震驚。

任何幫助,非常感謝。

+1

如果你已經做出了嘗試,展現你的代碼,有人或許可以告訴你,你出了問題。在沒有顯示代碼的情況下說「爲什麼不工作」是毫無意義的。 – alroc 2014-12-04 13:50:55

回答

0

因此,基本上,你只是想

  1. 獲取內C:\Zip\
  2. 所有文件的列表應用的代碼片段到每個人。

你想看看使用ForEach循環(也可以用縮寫形式表示,用於管道,如:$var | % {<#do this for each #>})。
您可以在互聯網上閱讀有關ForEach循環的更多信息 - 我對研究PowerShell主題非常感興趣的兩個站點是TechNetHey, 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 
} 
+1

好,謝謝你,我會做一些閱讀foreach循環,看起來像我會需要他們的很多事情。乾杯! – user3586898 2014-12-17 10:41:23

+0

我已經運行這個,並且它在每個zip文件中出現一個錯誤: _italic_Cannot找不到「ComputeHash」的超載和參數計數:「1」。在C:\ Users \ X \ X \ test.ps1:8 char:66 + $ return.hash = [System.BitConverter] :: ToString($ sha1.ComputeHash <<<<([System.IO.File] )) + CategoryInfo:NotSpecified:(:) []。 MethodException + FullyQualifiedErrorId:MethodCountCouldNotFindBest_italic_ 您對此有何理解? – user3586898 2014-12-17 12:11:37

+0

您是否正在運行上面的確切代碼? – 2014-12-17 12:31:19