Wie man Dateien mit FTP in PowerShell hochlädt
-
Verwenden Sie das
System.Net.WebClient
-Objekt, um Dateien mit FTP in PowerShell hochzuladen -
Verwenden Sie das
FtpWebRequest
-Objekt, um Dateien mit FTP in PowerShell hochzuladen - Mehrere Dateien mit FTP in PowerShell hochladen

FTP (File Transfer Protocol) ist ein standardmäßiges Netzwerkprotokoll, das verwendet wird, um Dateien zwischen einem Client und einem Server in einem Computernetzwerk zu übertragen. Ein FTP-Server ist eine gängige Lösung, um Dateiübertragungen über das Internet zu erleichtern.
Wir können Dateien auf einen FTP-Server hochladen und Dateien von einem FTP-Server herunterladen. PowerShell ist ein Skripting-Tool, das FTP-Hochlade- und Downloadaufgaben automatisieren kann.
Dieses Tutorial wird Ihnen beibringen, wie Sie Dateien mit PowerShell auf einen FTP-Server hochladen.
Verwenden Sie das System.Net.WebClient
-Objekt, um Dateien mit FTP in PowerShell hochzuladen
Wir können das System.Net.WebClient
-Objekt verwenden, um Dateien auf einen FTP-Server hochzuladen. Es sendet oder empfängt Daten von jeder lokalen, Intranet- oder Internetressource, die durch eine URI identifiziert wird.
Zuerst müssen wir eine Instanz eines System.Net.WebClient
-Objekts erstellen und es einer Variablen $WebClient
zuweisen. Das Cmdlet New-Object
erstellt eine .NET Framework- oder COM-Objektinstanz.
$WebClient = New-Object System.Net.WebClient
Jetzt legen wir eine Datei und eine FTP-URI fest. Verwenden Sie einen gültigen Benutzernamen und ein Passwort für den Server. Ersetzen Sie also den Wert in $FTP
durch Ihre FTP-Details.
$File = "C:\New\car.png"
$FTP = "ftp://ftp_user:ftp_password@ftp_host/car.png"
Erstellen Sie dann ein FtpWebRequest
-Objekt und konfigurieren Sie es wie unten gezeigt. Die Eigenschaft Credentials
wird verwendet, um die Anmeldedaten zum Verbinden mit einem FTP-Server anzugeben.
Die Eigenschaft UseBinary
legt einen booleschen Wert fest, um den Datentyp für Dateiübertragungen anzugeben. True
bedeutet, dass die zu übertragenden Daten binär
sind, und false
bedeutet, dass die zu übertragenden Daten Text
sind.
Diese Methode verwendet einen binären Übertragungsmodus, um Dateien ohne Modifikation oder Konvertierung zu übertragen. Infolgedessen wird die gleiche Datei auf dem Quellcomputer auf den Server hochgeladen.
$FTPRequest = [System.Net.FtpWebRequest]::Create("$remote_file")
$FTPRequest = [System.Net.FtpWebRequest]$FTPRequest
$FTPRequest.Method = [System.Net.WebRequestMethods+Ftp]::UploadFile
$FTPRequest.Credentials = New-Object System.Net.NetworkCredential($username, $password)
$FTPRequest.UseBinary = $true
$FTPRequest.UsePassive = $true
# Read the file for upload
$FileContent = gc -en byte $local_file
$FTPRequest.ContentLength = $FileContent.Length
# Get stream request by bytes
$run = $FTPRequest.GetRequestStream()
$run.Write($FileContent, 0, $FileContent.Length)
# Cleanup
$run.Close()
$run.Dispose()
Beim Verwenden eines FtpWebRequest
-Objekts zum Hochladen einer Datei auf einen Server müssen wir den Inhalt der Datei in den Anforderungsstream schreiben, der durch das Aufrufen der Methode GetRequestStream
erhalten wird.
Wir müssen in den Stream schreiben und ihn schließen, bevor wir die Anfrage senden.
Mehrere Dateien mit FTP in PowerShell hochladen
Manchmal müssen wir möglicherweise mehrere Dateien auf einen FTP-Server hochladen. Das Hochladen von Dateien einzeln dauert viel Zeit.
Wir haben daher dieses PowerShell-Skript erstellt, um mehrere Dateien in einem Rutsch auf einen FTP-Server hochzuladen.
Zuerst erstellen Sie ein System.Net.WebClient
-Objekt und weisen es einer Variablen $WebClient
zu.
$WebClient = New-Object System.Net.WebClient
Geben Sie das Verzeichnis an, in dem sich alle Dateien befinden, die Sie hochladen möchten.
$Dir = "C:\New"
Geben Sie dann die URI Ihres FTP-Servers an.
$FTP = "ftp://ftp_user:ftp_password@ftp_host/docs/"