Downloads mit der PowerShell: Moderne Methoden 2026

von | 23.03.2018 | Windows

In Windows gibt es neben der klassischen Konsole auch die PowerShell, die mittlerweile in Version 7.4 vorliegt und plattformübergreifend funktioniert. Wie bei der CMD-Shell lassen sich mit der PowerShell viele Bereiche des Systems schnell und effizient konfigurieren. Aber auch Downloads aus dem Web sind kein Problem – ganz ohne Browser.

Mit einfachen Befehlen lassen sich nicht nur öffentlich zugängliche Dateien aus dem Netz ziehen, sondern auch solche, die eine Authentifizierung erfordern. Die moderne PowerShell bietet dafür mehrere Methoden, die je nach Anwendungsfall ihre Vorteile haben.

Methode 1: Der klassische WebClient

Die bewährte Methode funktioniert noch immer zuverlässig:

$client = new-object System.Net.WebClient

$client.DownloadFile(„https://www.schieb.de/wp-content/uploads/2018/03/powershell.jpg“,“C:UsersBeispielPicturesFoto.jpg“)

Dabei die Download-URL und den Pfad auf dem lokalen System entsprechend anpassen. Achtung: Der angegebene Ordner muss bereits angelegt worden sein – der Download-Befehl erstellt nämlich von sich aus keine neuen Ordner. Zudem sollte auch die Erweiterung stimmen, in diesem Beispiel also „jpg“.

Methode 2: Invoke-WebRequest – Der moderne Ansatz

Seit PowerShell 3.0 gibt es mit Invoke-WebRequest eine elegantere Alternative, die mehr Flexibilität bietet:

Invoke-WebRequest -Uri „https://example.com/datei.zip“ -OutFile „C:Downloadsdatei.zip“

Dieser Befehl ist robuster und bietet bessere Fehlerbehandlung. Ihr könnt ihn auch mit dem Alias curl oder wget verwenden – das kennen viele von Linux-Systemen:

curl „https://example.com/datei.zip“ -OutFile „C:Downloadsdatei.zip“

Methode 3: Invoke-RestMethod für APIs

Wenn ihr Daten von REST-APIs herunterladen wollt, ist Invoke-RestMethod oft die bessere Wahl:

Invoke-RestMethod -Uri „https://api.github.com/repos/microsoft/powershell/releases/latest“ | Select-Object tag_name

Dieser Befehl lädt JSON-Daten herunter und konvertiert sie automatisch in PowerShell-Objekte.

Erweiterte Download-Optionen

Für komplexere Szenarien bietet die moderne PowerShell zahlreiche Parameter:

Headers setzen:
$headers = @{„User-Agent“=“Mozilla/5.0“; „Authorization“=“Bearer token123“}
Invoke-WebRequest -Uri $url -Headers $headers -OutFile $datei

Fortschritt anzeigen:
Invoke-WebRequest -Uri $url -OutFile $datei -UseBasicParsing

Proxy verwenden:
Invoke-WebRequest -Uri $url -OutFile $datei -Proxy „http://proxy:8080“

Authentifizierung mit Credentials:
$cred = Get-Credential
Invoke-WebRequest -Uri $url -Credential $cred -OutFile $datei

Batch-Downloads automatisieren

Besonders praktisch wird es, wenn ihr mehrere Dateien auf einmal herunterladen wollt:

$urls = @(
„https://example.com/datei1.zip“,
„https://example.com/datei2.zip“,
„https://example.com/datei3.zip“
)

foreach ($url in $urls) {
$filename = Split-Path $url -Leaf
Invoke-WebRequest -Uri $url -OutFile „C:Downloads$filename“
Write-Host „Downloaded: $filename“
}

Fehlerbehandlung und Validierung

Für produktive Skripte solltet ihr immer eine ordentliche Fehlerbehandlung einbauen:

try {
Invoke-WebRequest -Uri $url -OutFile $datei -ErrorAction Stop
Write-Host „Download erfolgreich: $datei“
} catch {
Write-Error „Download fehlgeschlagen: $($_.Exception.Message)“
}

Performance-Tipps

Für große Dateien könnt ihr den Parameter -UseBasicParsing nutzen, um die Performance zu verbessern. Dieser verzichtet auf das Parsen von HTML-Inhalten und ist daher schneller.

Bei sehr großen Downloads empfiehlt es sich, die Dateigröße vorher zu prüfen:

$response = Invoke-WebRequest -Uri $url -Method Head
$filesize = $response.Headers.’Content-Length‘
Write-Host „Dateigröße: $([math]::Round($filesize/1MB,2)) MB“

Fazit

Die PowerShell hat sich zu einem mächtigen Werkzeug für Downloads entwickelt. Während der klassische WebClient noch immer funktioniert, bieten Invoke-WebRequest und Invoke-RestMethod deutlich mehr Flexibilität und moderne Features. Besonders für Administratoren und Power-User ist das ein echter Gewinn – schnelle Downloads ohne Umweg über den Browser, mit voller Kontrolle über Parameter wie Authentifizierung, Proxy-Einstellungen und Fehlerbehandlung.

Zuletzt aktualisiert am 10.03.2026