PowerShell中的WriteAllBytes OutOfMemory

时间:2017-10-09 20:18:17

标签: powershell

我有一个API,它将文件作为byte[]返回。 我正在尝试使用PowerShell将此文件下载到本地计算机上(出于其他自动化原因,需要使用PowerShell)。 我正在使用WriteAllBytes,但是,对于大于100MB的文件会抛出错误(我认为,阈值可能会有所不同)。

是否有其他方法可以下载这些文件并将byte[]转换为实际文件?

这就是我现在所拥有的:

$fileInfo = New-Object ($namespace + ".fileInfoRequest")
$fileInfo.Filename = "$($File)"
$fileInfo.Hash = "e0d123e5f316bef78bfdf5a008837577" #random hash so ignore this.
$FileDetails = $WebService.GetFileInfo($fileInfo)
if ($FileDetails.Exists -eq "True") {
    [IO.File]::WriteAllBytes("$($InstallPath)\$($File)", $WebService.GetFileData($FileDetails))
} else {
    Write-Host -ForegroundColor Red "File $($File.FileName) could not be found in the system"
}

$WebService.GetFileData($FileDetails)返回byte []中的文件数据,所以这是我需要以某种方式操作的。

1 个答案:

答案 0 :(得分:0)

我今天早上面对同样的消息。 在我的情况下,很奇怪,该问题仅在使用远程Powershell会话时才触发,因此我可以看到与API的相似性,该API也可以通过网络。 就我而言,发生在直接在服务器控制台上直接打开的“标准” powershell会话中的同一命令没有引发错误。

我能够通过在服务器控制台上的管理powershell会话中使用以下命令来避免这种情况:

set-item wsman:localhost\Shell\MaxMemoryPerShellMB 2048

此后,所有远程Powershell会话都会停止以提供OutOfmemory。