Um módulo PowerShell para baixar arquivos.
Invoke-webrequest exige que você forneça o nome do arquivo de saída, que talvez você não conheça com antecedência, e nem sempre é possível extraí-lo do URL.
Ele também contém o arquivo inteiro na memória durante o download, o que é uma má notícia se baixar arquivos grandes.
Ele não reterá a data modificada do arquivo de origem original, como muitos navegadores o fazem.
Além disso (no Windows PowerShell com $ ProgressPreference definido como padrão) A barra de progresso é atualizada com tanta frequência que diminui drasticamente o download.
O start-bitstransfer pode determinar o nome do arquivo automaticamente, mas não funciona para todos os URLs e é suportado apenas no Windows.
Alguns URLs requerem diferentes agentes de usuário se conectam com sucesso.
Este módulo resolve esses problemas:
Ele usa a classe .NET HTTPClient (que agora é recomendada para uso pela Microsoft sobre a classe webclient agora depreciada).
Primeiro tentará pegar o nome do arquivo no cabeçalho da disposição de conteúdo. Os cabeçalhos são obtidos por uma solicitação GEG regular (como alguns servidores da Web demonstraram recusar solicitações de cabeça). Se esse cabeçalho não estiver presente, ele extrairá o nome do arquivo do URL absoluto (pois o URL fornecido poderá redirecionar para outro lugar).
O arquivo é transmitido diretamente para o disco, em vez de segurá -lo inteiramente na memória.
A data modificada será atualizada assim que o download for concluído para corresponder ao cabeçalho de última hora, se for encontrado.
A barra de progresso é limitada à atualização a cada 250ms para evitar o uso excessivo dos recursos do sistema.
As seqüências de agentes do usuário para o Chrome e o Googlebot Web Rastyler serão tentadas por padrão.
Instale na Galeria PowerShell executando o seguinte comando:
Install -Module -Name PSDownload
Resolve-uri "https://aka.ms/vs/17/release/vc_redist.x64.exe"
Isso retornará o URI absoluto (o URI redirecionado), bem como o nome do arquivo, o tamanho do arquivo e a última data modificada, se disponível nos cabeçalhos de resposta.
Invoke -download -uri "https://aka.ms/vs/17/release/vc_redist.x64.exe" -Destination "$ Env: userProfiledOwnloads"
Isso baixará o arquivo para a pasta Downloads.
A entrada de pipeline também é suportada:
"https://aka.ms/vs/17/release/vc_redist.x64.exe","https://aka.ms/vs/17/release/vc_redist.x86.exe" | Invoke -do -download -Destinação "$ Env: UserProfiledOwn downloads"
O URL também é aceito como um pseudônimo de URI .
Parâmetros opcionais:
Nome do arquivo
Use isso para substituir o nome do arquivo em vez de tentar detectar automaticamente.
UserAgent
Mozilla/5.0 (Windows NT 10.0; Win64; x64) Applewebkit/537.36 (Khtml, como Gecko) Chrome/116.0.0.0 Safari/537.36
Googlebot/2.1 (+http: //www.google.com/bot.html)
Substituir o agente de usuário padrão. Por padrão, ele percorrerá o uso de:
Cabeçalhos
O padrão é @{'Acep' = ' / '}, necessário para induzir alguns servidores a servir um download, como do FileZilla.
Temppath
Por padrão, o download em andamento será salvo para % temp % / $ Env: temp.
Ignorado
Ignore o cabeçalho modificado para data, modificado será a data em que o arquivo foi baixado.
BlockFile
Marque o arquivo como baixado da Internet (por padrão, ele não faz isso).
Noclobber
Use isso para impedir a substituição de um arquivo existente.
Noprogress
Suprimir a barra de progresso.
Passhru
Retorna um objeto FileInfo para o pipeline para o arquivo baixado.
Isso foi testado em relação a um grande número de URLs, envie um problema se não puder baixar um arquivo específico. Observe que algumas páginas da web podem executar algum JavaScript para acionar o download real. Esse tipo de URL não é suportado, ele deve apontar diretamente para um recurso sem a necessidade de executar nenhum script do lado do cliente.