【发布时间】:2015-02-13 16:07:48
【问题描述】:
我正在尝试使用以下命令在 powershell 中以字节形式读取大小为 1 GB 的文件,
$data = Get-Content -Encoding 字节 $filepath
它抛出以下错误: Get-Content:引发了“System.OutOfMemoryException”类型的异常。
搜索网络并发现在命令下运行可以修复它,但这对我不起作用。 设置项 wsman:localhost\Shell\MaxMemoryPerShellMB 4096
【问题讨论】:
-
我使用的是powershell 2.0版本,无法迁移到新版本
-
读取文件的目的是什么?这一切都需要一次驻留在内存中吗?
-
如果所有其他方法都失败了,您始终可以从 PowerShell 调用 .NET 类:
[io.file]::openread()会给您一个FileStream,然后您可以零碎地阅读它,而不是试图一次将其全部放入内存.编程很尴尬,但它是一些东西。此外,[io.file]::readallbytes()比get-content更快,尽管它可能对内存问题没有帮助。 -
您需要以管理员身份运行
Set-Item命令才能使其工作。但请注意在 PowerShell 中处理大量文件。事情可能会变得……相当缓慢。 -
如果文件可以“零碎”地处理,并且不需要一次全部读入内存,则使用正确的 -ReadCount 设置的 Get-Content 可以比 [ io.file] 方法。