Recently I downloaded a file using the Powershell command “Invoke-WebRequest” (there is a linuxy short form: “wget” which is nice). The exact command:
wget "https://URL_HERE" -OutFile Filename.iso
This worked flawlessly, but took an incredibly long time. The download speed was about one hundredth of my normal download speed.
After a little digging around, I came across this stackoverflow question (where else would one search for answers…) – apparently every “ByteReceived” event updates the display. So on EVERY byte received, the console’s Curser is put in the place of the bytes and the number is updated.

To get around this, you can disable the progress indicator completely:
$ProgressPreference = 'SilentlyContinue'
After that you don’t see the progress anymore, but at least it works normally fast.