Download bestanden met PowerShell

Hoe kan ik bestanden downloaden met PowerShell?

Het downloaden van bestanden met PowerShell kan soms wat problematisch zijn. In dit artikel geef ik je een klein PowerShell-scriptje dat je op je PS-shell kunt gebruiken om eenvoudig en snel bestanden te downloaden.

We zijn gewend om, als we bestanden downloaden, even snel een browser erbij te pakken. Bijvoorbeeld Chrome of Firefox. Maar op een server is er vaak geen browser, en als de server is voorzien van een Windows Server Core versie, is er helemaal geen browser beschikbaar. En dan? PowerShell!

PowerShell script om bestanden te downloaden

Je kunt het volgende scriptje gebruiken voor het downloaden van bestanden. Het heeft twee parameters nodig: de bron (de URL / het bestand om te downloaden) en de locatie inclusief bestandsnaam.

Sla de code op als bijvoorbeeld downloadfile.ps1.

param (
	[Parameter(Mandatory = $true, Position = 0, HelpMessage="Volledige downloadlink")]
	[string]$url,
	[Parameter(Mandatory = $true, Position = 1, HelpMessage="Met wildcard zoeken?")]
	[string]$output
)
$start_time = Get-Date

(New-Object System.Net.WebClient).DownloadFile($url, $output)
Write-Output "Saved ${output}, took: $((Get-Date).Subtract($start_time).Seconds) second(s)"

Je merkt waarschijnlijk al op dat hier System.Net.WebClient, of te wel ASP.NET, wordt gebruikt, en niet PowerShell’s Invoke-WebRequest. Dat komt omdat System.Net.WebClient véél sneller is. Een nadeel van System.Net.WebClient gebruiken is dat er geen progress-indicator is. Je ziet niet hoe lang het downloaden nog duurt.

Laten we PowerShell 7.0.1 downloaden als voorbeeld:

PS C:\Users\janreilink> .\downloadfile.ps1

cmdlet downloadfile.ps1 at command pipeline position 1
Supply values for the following parameters:
(Type !? for Help.)
url: https://github.com/PowerShell/PowerShell/releases/download/v7.0.1/PowerShell-7.0.1-win-x64.msi
output: Documents\PowerShell-7.0.1-win-x64.msi
Saved Documents\PowerShell-7.0.1-win-x64.msi, took: 18 second(s)

En het resultaat is een bestand van ~ 87 MB, gedownload in 18 seconden:

Protip: uiteraard kun je het script met argumenten ook in één keer opgeven:

PS C:\Users\janreilink> .\downloadfile.ps1 -url https://github.com/PowerShell/PowerShell/releases/download/v7.0.1/PowerShell-7.0.1-win-x64.msi -output .\Documents\PowerShell-7.0.1-win-x64.msi 

Waarom was dit 11 seconden sneller? Simpel: ik hoefde de gegevens niet te kopiëren plakken tijdens de uitvoer.

Lees ook:  IP-adres blokkeren in Windows 10

Doe er je voordeel mee :)

De bron van dit script is te vinden in het artikel 3 ways to download files with PowerShell van Jourdan Templeton. Ik gebruik dit vrijwel dagelijks voor het downloaden van programma’s en hun updates. Handig!


Heeft dit bericht jou geholpen bij het oplossen van een probleem? Of vond je het interessant? Steun dan ITFAQ.nl met een rechtstreekse donatie via Paypal of via IBAN: NL31 ABNA 0432217258 (t.n.v Jan Reilink). Slechts €5,- is al ruim voldoende, bedankt!

Steun ITFAQ.NL


116 x bekeken

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *