2014-12-01 101 views

回答

19

我不記得在Powershell V2的日子裏,通常也安裝了.NET 3.5。我認爲是這樣。

你總是可以嘗試以下,看看它的工作原理:

$file = 'd:\scripts\sha1.ps1' 

$sha1 = New-Object System.Security.Cryptography.SHA1CryptoServiceProvider 
[System.BitConverter]::ToString($sha1.ComputeHash([System.IO.File]::ReadAllBytes($file))) 

與你有一個文件的名稱替換的$file值。

+0

是的工作,太棒了!謝謝。 – user3586898 2014-12-03 11:13:51

+0

只需要注意一些人在IOS這樣的大文件上嘗試這樣的操作:'調用帶有「1」參數的異常調用「ReadAllBytes」:「文件太長,此操作目前僅限於支持小於2GB大小的文件「' – 2016-05-26 10:54:50

+1

使用['File.OpenRead']可能更好(https://msdn.microsoft.com/en-us/library/system.io.file.openread(v = vs.110).aspx)而不是試圖一次將整個文件加載到內存中。 ['HashAlgorithm.ComputeHash'](https://msdn.microsoft.com/en-us/library/xa627k19(v = vs.110).aspx)對'Stream'有重載。 – jpmc26 2017-04-12 21:19:45

1

是的,它可能是因爲它是NET 2.0的一部分。實際上,PowerShell Community Extensions使用.NET哈希支持來實現Get-Hash命令。版本2.1.1在PowerShell V2上安裝並運行。

+0

乾杯!有用的知道,但不幸的是,我無法以任何形式或形式升級PowerShell。 – user3586898 2014-12-03 11:13:35