PowerShell-Invoke-WebRequest, wie Sie automatisch verwenden Sie die ursprüngliche Datei-name?

Wie kann ich mit Invoke-WebRequest um eine Datei herunterzuladen, aber automatisch der name der Datei der gleiche, als wenn ich per browser heruntergeladen? Ich habe nicht gefunden, einen Weg, um -OutFile arbeiten ohne manuelles angeben der Namen der Datei. Ich bin fein mit dieser Beteiligung ein paar andere Zeilen code.

Eine gute Lösung:

  • Arbeiten, auch wenn die Datei name nicht in der Anfrage-URL. Zum Beispiel, die URL zum download der Visual Studio x64 Remote-Debugging-Tools ist http://go.microsoft.com/fwlink/?LinkId=393217 aber es lädt die Datei rtools_setup_x64.exe.
  • Nicht speichern Sie die gesamte Datei in den Speicher vor dem schreiben auf die Festplatte, es sei denn, das ist, was Invoke-WebRequest schon funktioniert auch mit dem -OutFile-Parameters (?)

Dank!

  • Was passiert, wenn Sie die direkte url in das snippet - http://download.microsoft.com/download/D/2/8/D28C6482-555B-4777-876F-85897C071FB6/rtools_setup_x64.exe
  • Offenbar Invoke-WebRequest noch Kräfte, die Sie angeben, den lokalen Dateinamen.
  • Ich möchte hinzufügen, eine gute Lösung wird die Verwendung des Content-Disposition-header zu beheben, die mit dem Namen. wget und curl genau das zu tun, und es ist eine einfache Erwartung eines Befehls zu, dass downloads von einer URL zu einer mit dem Namen. Viele Dienstleistungen dienen eine "Datei" aber hinter einer URL, die sich nicht selbst enthalten, die mit dem Namen.
  • Ich habe dieser PS-Umsetzung, die nicht zu Ehren der Content-Disposition-header. Vielleicht wäre es möglich, zu extrahieren, die Funktionalität zum erstellen einer PS-Funktion, die die Invoke-WebRequest könnte geleitet werden, um speichern Sie die Datei unter Verwendung der besten verfügbaren Angabe des Dateinamens aus der Antwort.
InformationsquelleAutor Vimes | 2014-08-04
Schreibe einen Kommentar