Web Download

Posted on: 20. November 2018
Oft ist es nötig, gewisse Dateien aus dem Internet herunter zu laden und dann weiter zu verarbeiten. Beispielsweise für den Import von Kundendaten oder für ein Backup von Dateien. Wir schauen uns 3 unterschiedliche Varianten an, wie man dies mit PowerSHELL bewerkstelligen kann.

Denk dran: solltest du Wünsche oder Anregungen für Themen und Beträge haben, dann lass es mich bitte wissen z.B. in einem Kommentar oder oben auf dem Input-Formular
Hier der Code aus dem Youtube-Video. Die Vorgehensweise und Bemerkungen findest du direkt als Kommentare (#Grün) im Code. So wird er dir ebenfalls in der PowerSHELL ISE angezeigt werden.
——————————————–
# Testdatei zum Donwloaden 100MB            
$DownloadDatei = "https://speed.hetzner.de/100MB.bin"            
            
# Testdatei zum Donwloaden 1GB            
# $DownloadDatei = "https://speed.hetzner.de/1GB.bin"            
            
# Testdatei zum Donwloaden 10GB            
#$DownloadDatei = "https://speed.hetzner.de/10GB.bin"            
            
$SpeicherOrdner = "C:\Script\Download"            
            
# Variante 1. PowerSHELL WebRequest            
###################################            
            
# Datei zum Speichern festlegen            
$SpeicherDatei = "$SpeicherOrdner\WebRequest100MB.bin"            
            
# Startzeit für Download-Zeitmessung            
$StartZeit = Get-Date            
            
Invoke-WebRequest -Uri $DownloadDatei -OutFile $SpeicherDatei            
            
Write-Host "Benötigte Downloadzeit mit WebRequest $(((Get-Date) - $StartZeit).Seconds) Sekunde(n)"            
            
            
# Variante 2. .NET WebClient            
###################################            
            
# Datei zum Speichern festlegen            
$SpeicherDatei = "$SpeicherOrdner\NETWebClient100MB.bin"            
            
# Startzeit für Download-Zeitmessung            
$StartZeit = Get-Date            
            
# Objekt für WebClient erstellen            
$WC = New-Object System.Net.WebClient            
            
# Download Synchron            
$WC.DownloadFile($DownloadDatei,$SpeicherDatei)            
            
# Download asynchron im Hintergrund, ohne Zeitmessung            
# $WC.DownloadFileAsync($DownloadDatei,$SpeicherDatei)            
            
Write-Host "Benötigte Downloadzeit mit .NET WebClient $(((Get-Date) - $StartZeit).Seconds) Sekunde(n)"            
            
            
# Variante 3. BitsTransfer Asynchron mit hoher Priorität            
########################################################            
            
# Datei zum Speichern festlegen            
$SpeicherDatei = "$SpeicherOrdner\BitsTransfer100MB.bin"            
            
# Startzeit für Download-Zeitmessung            
$StartZeit = Get-Date            
            
# PowerSHELL Modul importieren            
Import-Module BitsTransfer            
            
Start-BitsTransfer -Source $DownloadDatei -Destination $SpeicherDatei -Priority High            
            
Write-Host "Benötigte Downloadzeit mit BitsTransfer $(((Get-Date) - $StartZeit).Seconds) Sekunde(n)"
——————————————–
Solltest du irgendwelche Fragen haben, dann kannst du diese gerne entweder hier im Blog oder direkt unter dem YouTube Video stellen. Ich gebe alles, deine Fragen zeitnahe zu beantworten oder ein entsprechendes Video darüber zu machen.
Gerade die Grundlagen-Videos werde ich nicht mit viel Text ausschmücken. Bei mir ist jeweils jede Code-Zeile direkt im Code Kommentiert (#Grün). Du kannst den Code direkt mit in dein Script kopieren und hast so eine gute Orientierungshilfe, sobald du die Scripts auf deine Bedürfnisse anpasst.

Ich erstelle und veröffentliche sämtliche Videos kostenlos und blende auch keine Werbung ein, dies will ich auch so beibehalten. Da das vermittelte Wissen aber in teuren Kursen erlangt werden kann, ist eine kleine Spende hin und wieder sicher keine schlechte Gegenleistung.