Tags: Netzwerk, PowerShell
Unix-Fans kennen das Wget-Kommando, das mit einem Aufruf den Inhalt einer Webseite herunterladen kann. Ein direktes Pendant gibt es bei der PowerShell nicht, aber wer in der Suchmaschine die Worte "Wget PowerShell" eingibt wird schnell fündig. Die meisten Lösungen basieren auf der WebClient-Klasse im Namespace System.Net, die sich sehr einfach ansprechen lässt.
Die im Folgenden vorgestellte function bietet auch die Möglichkeit, die Anmeldeinformation für einen Webproxy anzugeben. Dazu muss nur der Parameter -UseProxy angegeben werden.
<#
.Synopsis
PowerShell-Pendant für Wget
#>
function Get-WebFile
{
param([String]$Url,[Switch]$UseProxy)
if ($UseProxy)
{
$WebProxy = New-Object -Typename System.Net.WebProxy
# Anmeldeinformation holen
$Cred = Get-Credential
$WebProxy.Credentials = $Cred.GetNetworkCredential()
}
# WebClient-Objekt anlegen
$WC = New-Object -TypeName System.Net.WebClient
try
{
# Ist ein Proxy im Spiel?
if ($WebProxy -ne $null)
{
$WC.Proxy = $WebProxy
}
# Datei herunterladen
$WC.DownloadString($Url)
}
catch
{
Write-Warning "Fehler beim Download ($_)"
}
}
Um die Function, deren Name der Verb-Haupt-Konvention folgt, etwas einfacher aufrufen zu können, wird ein Alias angelegt:
# Alias für Funktion setzen
Set-Alias -Name WGet -Value Get-WebFile
Der Aufruf sieht danach aus wie unter Unix:
wget https://www.windowspro.de
PS: Grundsätzlich ist es natürlich möglich, die Adresse und Portnummer eines Proxy anzugeben. Diese müssten als weitere Angaben (Konstruktor) beim Anlegen des neuen WebProxy-Objekts folgen:
$WebProxy = New-Object -Typename System.Net.WebProxy "Proxy-Adresse", Portnummer
Täglich Know-how für IT-Pros mit unserem Newsletter
Verwandte Beiträge
Weitere Links