Momentan gibt es eine ganze Menge eBooks von Microsoft gratis zum Download Unter „Download All“ auf der Seite bekommt man ein Textdokument in dem sich alle Downloadlinks befinden.
Da ich meine Powershell-Kenntnisse verbessern möchte, dachte ich mir ich könnte den Download der ganzen Bücher mit einem kurzen Skript automatisieren. An sich wäre das ganze auch gar kein Problem. Nur leider handelt es sich bei den Links um Redirect-Links. Das führt dazu, dass der Dateiname nach dem Download leider nur eine kryptische Zeichenfolge aus der Redirect-URL bleibt.
Eine Möglichkeit den Download durchzuführen bietet das Module „BitsTransfer“:
1 2 |
Import-Module BitsTransfer Start-BitsTransfer -source "https://ligman.me/1vM9mwt" |
Eine andere Möglichkeit bietet der Weg über ein Objekt:
1 2 3 4 |
$file = "C:\Downloads\myNewFilename.pdf" $url = "https://testurl.de" $webclient = New-Object System.Net.WebClient $webclient.DownloadFile($url,$file) |
Mit der folgenden Funktion wollte ich versuchen die Original-URl, inkl. dem korrekten Dateinamen, zu bestimmen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Get-Module -Name Microsoft.PowerShell.Management | select -exp HelpInfoUri Function Get-RedirectUrl { Param ( [Parameter(Mandatory=$true)] [String]$URL ) $request = [ System.Net.WebRequest]::Create($url) $request.AllowAutoRedirect=$false $response=$request.GetResponse() If ($response.StatusCode -eq "Found") { $response.GetResponseheader("Location") } } |
Leider gab diese Funktion nur andere kryptische Links aus, die leider nicht gültig waren.
Wenn das vernünftig funktionieren würde bräuchte man nur noch eine foreach-Schleife, die den Vorgang für jeden Link wiederholt. Somit ist ein Download bei dem die Dateien korrekt benannt werden sollen für mich momentan nur bei Direkt-Links mit Powershell realisierbar. Deshalb habe ich den Download doch über den JDownloader durchgeführt -.-
Quellen:
https://learn-powershell.net/2011/02/11/using-powershell-to-query-web-site-information/
https://www.powershellmagazine.com/2013/01/29/pstip-retrieve-a-redirected-url/