Powershell 3:防止webrequest过多的内存使用

时间:2015-02-02 09:38:54

标签: powershell powershell-v3.0

我写了一个简短的脚本,让我下载一个文件。

Invoke-WebRequest -Uri $r2.Forms.Action -WebSession $myWebSession -OutFile $destination$filename

整个下载缓冲在内存中,这对于较大的文件显然不是最佳选择。我想知道(我找不到)一种方法/属性来防止这种情况并直接流式传输到磁盘。与.NET中的AllowWriteStreamBuffering类似的东西。

Out of Memory Exception When Using HttpWebRequest to Stream Large File

感谢任何帮助!

1 个答案:

答案 0 :(得分:5)

似乎唯一的方法是使用WebClient

$webclient = new-object System.Net.WebClient
$webclient.Credentials = new-object System.Net.NetworkCredential($id, $p, $url)
$webclient.DownloadFile($r2, $destination+$tempfile)

#rename tempfile
$filename = $webclient.ResponseHeaders["Content-Disposition"].SubString($webclient.ResponseHeaders["Content-Disposition"].IndexOf("filename=")+10).Replace("`"", "");
Rename-Item $destination$tempfile -NewName $filename