我正在我的笔记本电脑上安装Fedora Live Workstation,我被困在步骤"3.3.1. Verifying checksums on Windows systems" item "5.Calculate the downloaded image's checksum. This will take a while!"上。 Windows PowerShell不断抛出以下异常:
$download_checksum = [System.BitConverter]::ToString($sha256.ComputeHash([System.IO.File]::ReadAllBytes("$PWD\$image"))).ToLower() -replace '-', '' Eccezione durante la chiamata di "ReadAllBytes" con "1" argomento/i: "Generata eccezione di tipo 'System.OutOfMemoryException'." (Exception during the call of "ReadAllBytes" with "1" argument:"Generate exception type 'System.OutOfMemoryException'.") In riga:1 car:104 (In line:1 char:104) + $download_checksum = [System.BitConverter]::ToString($sha256.ComputeHash([System.IO.File]::ReadAllBytes <<<< ("$PWD\$image"))).ToLower() -replace '-', '' + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : DotNetMethodException
我不熟悉Windows Powershell而不是一个非常熟练的程序员,但为了解决这个问题,我提出了一些假设。如果他们不相关,请纠正我。
如果此异常的原因是硬件(例如,RAM内存不足以处理计算),是否有任何变通方法可以将计算拆分为较小的步骤,从而允许计算机处理较小的信息块?
在将指令调整到PowerShell中时,由于编译错误,解释器是否有可能溢出?
一些重要信息可能是:
答案 0 :(得分:2)
不要将整个文件读入内存。这样做:
$filename = Join-Path $PWD $image
$sha256 = New-Object Security.Cryptography.SHA256CryptoServiceProvider
$stream = (Get-Item $filename).OpenRead()
$hash = $sha256.ComputeHash($stream)
$stream.Close()
$download_checksum = [BitConverter]::ToString($hash).ToLower() -replace '-'
答案 1 :(得分:0)
如果此异常的原因是硬件(例如,RAM内存不足以处理计算),是否有任何变通方法可以将计算拆分为较小的步骤,从而允许计算机处理较小的信息块?
不知道任何合理的方式。
我会通过刻录iso来解决这个问题(相信没有错误),启动到live-CD并在Linux下进行校验和,这太简单了。