2014-12-01 14 views

risposta

19

Non riesco a ricordare di nuovo in Powershell V2 giorni, .NET 3.5 è stato in genere installato anche. Penso che sia il caso.

si può sempre provare quanto segue e vedere se funziona:

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

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

sostituire il valore della $file con il nome di un file che avete.

+0

Sì, ha funzionato, fantastico! Grazie. – user3586898

+0

Solo una nota per le persone che lo provano su file di grandi dimensioni come IOS: "Eccezione chiamata" ReadAllBytes "con argomento" 1 ":" Il file è troppo lungo. Questa operazione è attualmente limitata per supportare file di dimensioni inferiori a 2 gigabyte . "' –

+1

Probabilmente è meglio usare ['File.OpenRead'] (https://msdn.microsoft.com/en-us/library/system.io.file.openread (v = vs.110) .aspx) invece di provare a caricare l'intero file in memoria in una volta. ['HashAlgorithm.ComputeHash'] (https://msdn.microsoft.com/en-us/library/xa627k19 (v = vs.110) .aspx) ha un sovraccarico per' Stream'. – jpmc26

1

Sì, è possibile poiché fa parte di NET 2.0. Infatti, lo PowerShell Community Extensions utilizza il supporto hash .NET per implementare il comando Get-Hash. La versione 2.1.1 viene installata ed eseguita su PowerShell V2.

+0

Cheers per quello! utile sapere, ma sfortunatamente non sono in grado di aggiornare PowerShell in alcun modo forma o forma. – user3586898