Een bestand downloaden met PowerShell

Ik heb een URL naar een CSV-bestand dat ik in een browser zonder problemen kan downloaden en openen.

Ik probeer dit bestand zonder succes te downloaden met PowerShell. Ik heb geprobeerd Invoke-WebRequest, Start-BitsTransferte gebruiken en een webrequest-object te gebruiken, maar geen geluk.


Antwoord 1, autoriteit 100%

Invoke-WebRequestwordt geleverd met een parameter om het resultaat in een bestand op te slaan: -OutFile

Invoke-WebRequest URL -OutFile c:\file.ext

Als u autorisatie nodig heeft voordat u een verzoek als volgt kunt verzenden:

Invoke-WebRequest URL /* whatever is neccesary to login */ -SessionVariable MySession
Invoke-WebRequest URL -WebSession $MySession

Om de lay-out te bepalen van het formulier waar de login plaatsvindt, kunt u het retourobject Invoke-WebRequests gebruiken. Het verzamelt informatie over formulieren en velden in de HTML (mogelijk alleen voor Windows). Kilometerstand van inloggen kan variëren met zaken als Two-Factor-Auth actief of niet. Waarschijnlijk kunt u een geheime link naar uw bestand maken waarvoor geen Auth nodig is, of mogelijk stelt Google u in staat om een of andere privétoegangstoken te maken, die samen met uw verzoek als Authorization-Header kan worden verzonden.


Antwoord 2, autoriteit 5%

TLDR-antwoorden*:

Methode 1, standaard synchroon**

Invoke-WebRequest $url -OutFile $path_to_file

Methode 2, standaard synchroon**

(New-Object System.Net.WebClient).DownloadFile($url, $path_to_file)

Methode 3, asynchroon en mogelijk niet onmiddellijk, maakt gebruik van BITS-service

Import-Module BitsTransfer
Start-BitsTransfer -Source $url -Destination $path_to_file

Opmerkingen:

*: Dit antwoord is voor degenen die googlen op “hoe een bestand te downloaden met PowerShell”.

**: Lees de helppagina’s als u asynchroon wilt downloaden

Other episodes