Dies ist das Skript, das ich zum Importieren von Dateien von einem FTP-Server bekommen habe.
Ich bin mir aber nicht sicher, was remotePickupDir
ist und ist dieses Skript korrekt?
Der Remote-Verzeichnispfad sollte der genaue Pfad auf dem FTP-Server sein, auf den Sie zugreifen möchten. Hier ist das Skript zum Herunterladen von Dateien vom Server .. Sie können hinzufügen oder ändern mit SSLMode ..
%Vor%Die in der Frage verwendete AlexFTPS-Bibliothek scheint tot zu sein (wurde seit 2011 nicht aktualisiert).
Alternativ können Sie versuchen, dies ohne externe Bibliothek zu implementieren. Leider haben weder .NET Framework noch PowerShell eine explizite Unterstützung für das Herunterladen aller Dateien in einem Verzeichnis (lassen Sie nur rekursive Dateidownloads zu).
Sie müssen das selbst implementieren:
Der Trick besteht darin, Dateien aus Unterverzeichnissen zu identifizieren. Mit dem .NET-Framework ( FtpWebRequest
oder WebClient
) ist dies nicht möglich. Das .NET-Framework unterstützt leider nicht den Befehl MLSD
, der die einzige Möglichkeit ist, Verzeichnislisten mit Dateiattributen im FTP-Protokoll abzurufen. Siehe auch Überprüfen, ob das Objekt auf dem FTP-Server eine Datei oder ein Verzeichnis ist .
Ihre Optionen sind:
ListDirectory
( NLST
FTP) und laden Sie einfach alle "Namen" als Dateien herunter. LIST
command = ListDirectoryDetails
method) und versuchen, eine serverspezifische Auflistung zu analysieren. Viele FTP-Server verwenden einen * nix-style-Eintrag, in dem Sie ein Verzeichnis am Anfang des Eintrags durch d
identifizieren. Viele Server verwenden jedoch ein anderes Format. Das folgende Beispiel verwendet diesen Ansatz (unter der Annahme des * nix-Formats) Verwenden Sie die Funktion wie folgt:
%Vor%Der Code wurde aus meinem C # -Beispiel in C # übersetzt. Laden Sie alle Dateien und Unterverzeichnisse über FTP herunter .
Wenn Sie Probleme beim Parsen der serverspezifischen Verzeichnislistenformate vermeiden möchten, verwenden Sie eine Bibliothek von Drittanbietern, die den Befehl MLSD
unterstützt und / oder verschiedene Auflistungsformate von LIST
analysiert. Und im Idealfall mit einer Unterstützung für das Herunterladen aller Dateien aus einem Verzeichnis oder sogar rekursive Downloads.
Zum Beispiel mit WinSCP .NET Assembly können Sie das ganze Verzeichnis mit einem einzigen Aufruf nach Session.GetFiles
:
Intern verwendet WinSCP den Befehl MLSD
, wenn er vom Server unterstützt wird. Wenn nicht, verwendet es den Befehl LIST
und unterstützt Dutzende verschiedener Auflistungsformate.
Die Methode Session.GetFiles
ist standardmäßig rekursiv.
(Ich bin der Autor von WinSCP)
Hier ist der vollständige Funktionscode, um alle Dateien (mit Platzhalter oder Dateierweiterung) von der FTP-Site in das lokale Verzeichnis herunterzuladen. Legen Sie die Variablenwerte fest.
%Vor% Der remotePickupDir
wäre der Ordner, den Sie auf dem FTP-Server aufrufen möchten. Soweit "ist dieses Skript korrekt", nun, funktioniert es? Wenn es funktioniert, ist es korrekt. Wenn es nicht funktioniert, sagen Sie uns, welche Fehlermeldung oder unerwartetes Verhalten Sie erhalten und wir können Ihnen besser helfen.
Zum Abrufen von Dateien / Ordner von FTP über PowerShell habe ich einige Funktionen geschrieben, Sie können sogar versteckte Sachen von FTP bekommen.
Beispiel für das Abrufen aller Dateien, die nicht in einem bestimmten Ordner versteckt sind:
%Vor%Beispiel für das Abrufen aller Ordner (auch ausgeblendet) in einem bestimmten Ordner:
%Vor%Sie können einfach die Funktionen des folgenden Moduls kopieren, ohne die dritte Bibliothek installieren zu müssen: Ссылка
Tags und Links powershell ftp