我有一个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 []中的文件数据,所以这是我需要以某种方式操作的。
答案 0 :(得分:0)
我今天早上面对同样的消息。 在我的情况下,很奇怪,该问题仅在使用远程Powershell会话时才触发,因此我可以看到与API的相似性,该API也可以通过网络。 就我而言,发生在直接在服务器控制台上直接打开的“标准” powershell会话中的同一命令没有引发错误。
我能够通过在服务器控制台上的管理powershell会话中使用以下命令来避免这种情况:
set-item wsman:localhost\Shell\MaxMemoryPerShellMB 2048
此后,所有远程Powershell会话都会停止以提供OutOfmemory。