Automatisiere Datei-Downloads per PowerShell und .Net

So nutzst du die WebClient-Komponente

Ob Update oder neuste Protokolldateien – Als Server-Administrator müssen wir regelmäßig neue Dateien auf unseren Server laden. Auf einem Linux-Server geht das bequem mit dem wget-Kommando. Doch wie automatisierst du als Windows-Administrator einen Datei-Download? Die Antwort ließt du in diesem Beitrag.

PowerShell und .Net-Framework: So nutzst du die „WebClient“-Komponente

Die PowerShell ist eine mächtige Scripting-Engine auf deinem Windows-Server. Diese ist deshalb für uns Administratoren so wertvoll, weil wir aus der PowerShell auch Komponenten des .-Net-Frameworks nutzen können. Und das .Net-Framework verfügt bereits über eine praktische Funktion, um eine Datei aus dem Web zu laden. Diese heißt: „System.Net.WebClient“.

Um die Komponente in der PowerShell zu nutzen, musst du zunächst eine Instanz der Komponente bilden. Dies erledigst du mit folgendem Kommando:

$cl = new-object system.net.webclient

Anschließend kannst du mit folgendem Kommando eine Datei herunterladen und in einem Bestimmten Verzeichnis speichern:

$cl.DownloadFile([URL] , [ZIEL])

Beispiel: So ladest du automatisch die neuste Mail-Server-Version herunter

Lasse uns die praktische Anwendung anhand eines Beispiels betrachten. Ein Kunde hat uns kürzlich gefragt, wie er stets die neuste Version der Mail-Server-Software „Kerio“ (für Windows) herunterladen könnte. Die jeweils aktuelle Version wird stets unter der folgenden Adresse bereitgestellt:

http://download.kerio.com/dwn/kerio-connect-win32.exe

Anstatt die Datei über den Web-Browser manuell herunterzuladen, wollte er diese einmal pro Monat per Script herunterladen. Dazu hat er in seinem Script folgende zwei Befehle genutzt, um die Datei unter „c:\KerioUpdate\“ zu speichern.

$cl = new-object system.net.webclient

$cl.DownloadFile(“http://download.kerio.com/dwn/kerio-connect-win32.exe”, “c:\KerioUpdate“)