Herunterladen von Website-Dateien in Powershell

10

Ich versuche, ein Skript zum Abfragen von Dateien auf einer IIS-Website zu erhalten, und lade diese Dateien dann automatisch herunter. Bisher habe ich Folgendes:

%Vor%


Ich bin noch nicht so gut in PowerShell, und ich bekomme einige Fehler, aber ich bekomme ein paar Testdateien, die ich in meinen wwwroot-Ordner warf (die web.config-Datei scheint nicht herunterladbar, also würde ich mir vorstellen, dass das einer meiner Fehler ist ). Als ich versuchte, meinen $source -Wert in einen Unterordner meiner Website zu ändern, der Testtextdateien enthielt (Beispiel = http://testsite:8005/subfolder/ , erhalte ich Fehler und überhaupt keine Downloads. Wenn ich meine $testcode1 ausführe, werden mir die folgenden Links angezeigt mein Unterordner:
/subfolder/test2/txt
/
/subfolder/test1.txt
/subfolder/test2.txt
Ich weiß nicht, warum es die test2-Datei zweimal auflistet. Ich dachte mein Problem war, dass, da es das Unterordner- / Dateiformat zurückgab, dass ich Fehler erhielt, weil ich $source + $line herunterladen wollte, was im Wesentlichen http://testsite:8005/subfolder/subfolder/test1.txt wäre, aber als ich versuchte, das durch Hinzufügen von a zu beheben $root value das war das root-Verzeichnis meiner Site und mache ein foreach($line in $testcode1) { $webclient.downloadfile($root + $line, $destination + $line) } , ich bekomme immer noch Fehler.
Wenn einige von euch Hochgeschwindigkeitsgurus mir helfen könnten, mir den Fehler meiner Wege zu zeigen, wäre ich dankbar. Ich möchte alle Dateien in jedem Unterordner meiner Website herunterladen, von denen ich weiß, dass sie einige rekursive Aktionen beinhalten würden, aber wiederum habe ich derzeit nicht die Fähigkeit, dies selbst zu tun. Vielen Dank im Voraus für die Hilfe!

    
Sacto_Smithers 24.10.2013, 16:59
quelle

3 Antworten

4

Der beste Weg, um Dateien von einer Website herunterzuladen, ist

Invoke-WebRequest –Uri $url

Sobald Sie in der Lage sind, den HTML-Code zu erhalten, können Sie den Inhalt für die Links analysieren.

$result = (((Invoke-WebRequest –Uri $url).Links | Where-Object {$_.href -like “http*”} ) | select href).href

Probieren Sie es aus. Es ist einfacher als $ webclient = New-Object System.Net.webclient

    
A_N 06.09.2016 09:49
quelle
1

Ich würde das versuchen:

%Vor%

Ich denke, Ihr einziges Problem hier ist, dass Sie eine neue Datei aus einem neuen Verzeichnis genommen haben und sie in einen Ordner gelegt haben, der noch nicht existiert (ich könnte mich irren).

Sie können zusätzliche Fehler beheben, wenn das Problem dadurch nicht behoben wird:

Kopieren Sie jede Zeile einzeln in Ihr Powershell-Fenster und führen Sie sie bis zur foreach-Schleife aus. Dann tippe deine Variable aus, die das ganze Gold enthält:

%Vor%

Wenn Sie das in die Konsole eingeben, sollte es genau das ausspucken, was da drin ist. Dann können Sie zusätzliche Fehlerbehebung wie folgt durchführen:

%Vor%

Und sehen Sie, ob es so aussieht, wie es sollte. Sie müssen möglicherweise meinen Code ein wenig anpassen.

-Dale Harris

    
DaleHarris541 24.10.2013 20:51
quelle
0

Dies soll die Antwort von A_N um zwei Beispiele erweitern.

Laden Sie diese Stackoverflow-Frage in C:/temp/question.htm herunter.

%Vor%

Laden Sie ein einfaches Textdokument in C:/temp/rfc2616.txt herunter.

%Vor%     
Shaun Luttin 15.02.2018 22:39
quelle

Tags und Links