2014-12-01 19 views

Trả lời

19

Tôi không thể nhớ lại trong Powershell V2 ngày, .NET 3.5 cũng thường được cài đặt. Tôi nghĩ là vậy.

Bạn luôn có thể thử như sau và xem nếu nó hoạt động:

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

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

Thay thế giá trị của $file với tên của một tập tin mà bạn có.

+0

Vâng, điều đó thật tuyệt vời! Cảm ơn bạn. – user3586898

+0

Chỉ cần một lưu ý cho những người cố gắng này trên các tập tin lớn như của IOS: 'Ngoại lệ gọi" ReadAllBytes "với" 1 "đối số (s):" Tập tin quá dài. Hoạt động này hiện đang bị hạn chế để hỗ trợ các tập tin có kích thước nhỏ hơn 2 gigabyte . "' –

+1

Có lẽ tốt hơn nên sử dụng ['File.OpenRead'] (https://msdn.microsoft.com/en-us/library/system.io.file.openread (v = vs.110) .aspx) thay vì cố tải toàn bộ tệp vào bộ nhớ cùng một lúc. ['HashAlgorithm.ComputeHash'] (https://msdn.microsoft.com/en-us/library/xa627k19 (v = vs.110) .aspx) có quá tải cho' Stream'. – jpmc26

1

Có, có thể vì nó là một phần của NET 2.0. Thực tế, PowerShell Community Extensions sử dụng hỗ trợ băm .NET để thực hiện lệnh Get-Hash. Phiên bản 2.1.1 cài đặt và chạy trên PowerShell V2.

+0

Chúc mừng cho điều đó! hữu ích để biết, nhưng tiếc là tôi không thể nâng cấp powershell trong bất kỳ hình dạng hoặc hình thức nào. – user3586898

Các vấn đề liên quan