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:
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!
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
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
Dies soll die Antwort von A_N um zwei Beispiele erweitern.
Laden Sie diese Stackoverflow-Frage in C:/temp/question.htm
herunter.
Laden Sie ein einfaches Textdokument in C:/temp/rfc2616.txt
herunter.
Tags und Links powershell