【发布时间】:2021-04-05 11:53:01
【问题描述】:
Function calculateMD5($filename) {
$md5 = New-Object -TypeName System.Security.Cryptography.MD5CryptoServiceProvider
$hash = [System.BitConverter]::ToString($md5.ComputeHash([System.IO.File]::ReadAllBytes($filename)))
$hash = $hash -replace '-', ''
return $hash.ToLower()}
我使用了上面的查询,但出现以下错误
使用“1”参数调用“ReadAllBytes”的异常:“文件是 太长。此操作目前仅限于支持文件较少 大小超过 2 GB。”
在下面尝试过
$hash = [System.BitConverter]::ToString($md5.ComputeHash([System.IO.File]::Open("$someFilePath",[System.IO.Filemode]::Open, [System.IO.FileAccess]::Read)))
但是我的 PowerShell 停止使用它
【问题讨论】:
-
您是否尝试过Get-FileHash cmdlet?
-
@Vivek Get-FileHash 不工作
-
Get-FileHash确实是正确的 PowerShell 方法(不同之处在于 PowerShell 几乎不使用任何内存,因为它 流 整个文件)。请详细说明“不起作用”... -
如果它有帮助,我刚刚在使用 FS util 创建的 3GB 文件上尝试了
Get-FileHash,它工作了,可以理解是慢,但它工作了。我要指出将数据读入内存通常会导致内存消耗是读取文件大小的 4 倍。 Reference。通常我认为内存问题被夸大了,但在这种情况下你可能需要考虑它。
标签: powershell