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-BitsTransfer
te gebruiken en een webrequest-object te gebruiken, maar geen geluk.
Antwoord 1, autoriteit 100%
Invoke-WebRequest
wordt 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