Come caricare file con FTP in PowerShell
-
Usa l’oggetto
System.Net.WebClient
per caricare file con FTP in PowerShell -
Usa l’oggetto
FtpWebRequest
per caricare file con FTP in PowerShell - Carica più file con FTP in PowerShell

FTP (File Transfer Protocol) è un protocollo di rete standard utilizzato per trasferire file tra un client e un server su una rete informatica. Un server FTP è una soluzione comune per facilitare i trasferimenti di file attraverso Internet.
Possiamo caricare file su un server FTP e scaricare file da un server FTP. PowerShell è uno strumento di scripting che può automatizzare compiti di caricamento e scaricamento FTP.
Questo tutorial ti insegnerà a caricare file su un server FTP utilizzando PowerShell.
Usa l’oggetto System.Net.WebClient
per caricare file con FTP in PowerShell
Possiamo usare l’oggetto System.Net.WebClient
per caricare file su un server FTP. Esso invia o riceve dati da qualsiasi risorsa locale, intranet o Internet identificata da un URI.
Innanzitutto, dobbiamo creare un’istanza di un oggetto System.Net.WebClient
e assegnarla a una variabile $WebClient
. Il cmdlet New-Object
crea un’istanza di un oggetto .NET Framework o COM.
$WebClient = New-Object System.Net.WebClient
Ora, specifichiamo un file e un URI FTP. Usa un nome utente e una password validi per il server. Quindi, sostituisci il valore in $FTP
con i tuoi dettagli FTP.
$File = "C:\New\car.png"
$FTP = "ftp://ftp_user:ftp_password@ftp_host/car.png"
Poi crea un oggetto FtpWebRequest
e configuralo come mostrato qui sotto. La proprietà Credentials
è utilizzata per specificare le credenziali per connettersi a un server FTP.
La proprietà UseBinary
imposta un valore booleano per specificare il tipo di dati per i trasferimenti di file. True
indica che i dati da trasferire sono binari
, e false
indica che i dati da trasferire sono testo
.
Questo metodo utilizza una modalità di trasferimento binario per trasferire file senza modifiche o conversioni. Di conseguenza, lo stesso file sul computer sorgente sarà caricato sul server.
$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()
Quando si utilizza un oggetto FtpWebRequest
per caricare un file su un server, dobbiamo scrivere il contenuto del file nel flusso di richiesta ottenuto chiamando il metodo GetRequestStream
.
Dobbiamo scrivere nel flusso e chiuderlo prima di inviare la richiesta.
Carica più file con FTP in PowerShell
A volte, potremmo aver bisogno di caricare più file su un server FTP. Caricare file uno alla volta richiederà molto tempo.
Quindi, abbiamo creato questo script PowerShell per caricare più file su un server FTP in un’unica operazione.
Innanzitutto, crea un oggetto System.Net.WebClient
e assegnalo a una variabile $WebClient
.
$WebClient = New-Object System.Net.WebClient
Specifica la directory in cui sono presenti tutti i file che desideri caricare.
$Dir = "C:\New"
Poi specifica l’URI del tuo server FTP.
$FTP = "ftp://ftp_user:ftp_password@ftp_host/docs/"