Faça o download de arquivos grandes com o PowerShell

0

Eu tentei o seguinte

Invoke-WebRequest -Uri " link "-OutFile" Exchange.iso "

Mas isso falha com "OutOfMemory".

Então eu tentei -TransferEncoding "chunked" que me diz que eu tenho que definir a propriedade "SendChunked" primeiro.

A Documentação não informa como, onde e quando definir essa propriedade ...

    
por 白川 マセル 05.07.2016 / 12:13

1 resposta

0

O PowerShell limita as conexões remotas (para cerca de 128 MB para versões mais antigas). Você pode aumentar esse limite usando Set-Item .\MaxMemoryPerShellMB . Mas isso pode não resolver o problema de arquivos muito grandes.

A melhor opção para isso seria usar o BITS

Exemplo:

$url = "http://files.net/test/file1.test"
$output = "$PSScriptRoot\file1.test"
$start_time = Get-Date

Import-Module BitsTransfer

Start-BitsTransfer -Source $url -Destination $output
***OR***
Start-BitsTransfer -Source $url -Destination $output -Asynchronous

Write-Output "Time taken: $((Get-Date).Subtract($start_time).Seconds) second(s)"

Como alternativa, experimente o .Net.WebClient:

$url = "http://files.net/test/file1.test"
$output = "$PSScriptRoot\file1.test"
$start_time = Get-Date
    $wc = New-Object System.Net.WebClient
    $wc.DownloadFile($url, $output)
    ***OR***
    (New-Object System.Net.WebClient).DownloadFile($url, $output)

    Write-Output "Time taken: $((Get-Date).Subtract($start_time).Seconds) second(s)"
    
por 05.07.2016 / 12:33