压缩存档将抛出“ System.OutOfMemoryException”

时间:2019-03-15 07:10:34

标签: powershell

在PowerShell命令的远程运行下将文件夹压缩为zip格式时,出现“ System.OutOfMemoryException”

PS > Compress-Archive -Path \\myserver1\Backup\8159 -DestinationPath \\myserver1\Backup\8159.zip

直接在myserver1计算机中运行如下所示的命令,然后获取Exception calling "Write" with "3" argument(s): "Stream was too long."

PS > Compress-Archive -Path E:\Backup\8159 -DestinationPath E:\Backup\8159.zip

我也在下面验证了

Get-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB
WSManConfig: Microsoft.WSMan.Management\WSMan::localhost\Shell

Type            Name                           SourceOfValue   Value
----            ----                           -------------   -----
System.String   MaxMemoryPerShellMB                            2147483647
Get-Item WSMan:\localhost\Plugin\Microsoft.PowerShell\Quotas\MaxMemoryPerShellMB
WSManConfig: Microsoft.WSMan.Management\WSMan::localhost\Plugin\microsoft.powershell\Quotas

Type            Name                           SourceOfValue   Value
----            ----                           -------------   -----
System.String   MaxMemoryPerShellMB                            2147483647

有人可以帮我吗?

预先感谢...

1 个答案:

答案 0 :(得分:0)

the docs中所述,Compress-Archive cmdlet依赖于Microsoft .NET API System.IO.Compression.ZipArchive来压缩文件。

它指出“因此,最大文件大小为2 GB。这是基础API的限制。”

如果要压缩的数据超出该限制,则会出现此错误。

也许您最好使用7Zip。 您可以在PSGallery中找到模块7Zip4Powershell