Comment télécharger des fichiers avec FTP dans PowerShell

  1. Utilisez l’objet System.Net.WebClient pour télécharger des fichiers avec FTP dans PowerShell
  2. Utilisez l’objet FtpWebRequest pour télécharger des fichiers avec FTP dans PowerShell
  3. Télécharger plusieurs fichiers avec FTP dans PowerShell
Comment télécharger des fichiers avec FTP dans PowerShell

Le FTP (File Transfer Protocol) est un protocole réseau standard utilisé pour transférer des fichiers entre un client et un serveur sur un réseau informatique. Un serveur FTP est une solution courante pour faciliter les transferts de fichiers via Internet.

Nous pouvons télécharger des fichiers sur un serveur FTP et télécharger des fichiers depuis un serveur FTP. PowerShell est un outil de script qui peut automatiser les tâches de téléchargement et de téléversement FTP.

Ce tutoriel vous apprendra à télécharger des fichiers sur un serveur FTP à l’aide de PowerShell.

Utilisez l’objet System.Net.WebClient pour télécharger des fichiers avec FTP dans PowerShell

Nous pouvons utiliser l’objet System.Net.WebClient pour télécharger des fichiers sur un serveur FTP. Il envoie ou reçoit des données de toute ressource locale, intranet ou Internet identifiée par une URI.

Tout d’abord, nous devons créer une instance d’un objet System.Net.WebClient et l’assigner à une variable $WebClient. La cmdlet New-Object crée une instance d’objet .NET Framework ou COM.

$WebClient = New-Object System.Net.WebClient

Maintenant, spécifiez un fichier et une URI FTP. Utilisez un nom d’utilisateur et un mot de passe valides pour le serveur. Remplacez donc la valeur dans $FTP par vos détails FTP.

$File = "C:\New\car.png"
$FTP = "ftp://ftp_user:ftp_password@ftp_host/car.png"

Ensuite, créez un objet FtpWebRequest et configurez-le comme indiqué ci-dessous. La propriété Credentials est utilisée pour spécifier les identifiants pour se connecter à un serveur FTP.

La propriété UseBinary définit une valeur booléenne pour spécifier le type de données pour les transferts de fichiers. True indique que les données à transférer sont binaires, et false indique que les données à transférer sont texte.

Cette méthode utilise un mode de transfert binaire pour transférer des fichiers sans modification ni conversion. En conséquence, le même fichier sur l’ordinateur source sera téléchargé sur le serveur.

$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()

Lors de l’utilisation d’un objet FtpWebRequest pour télécharger un fichier vers un serveur, nous devons écrire le contenu du fichier dans le flux de requête obtenu en appelant la méthode GetRequestStream.

Nous devons écrire dans le flux et le fermer avant d’envoyer la requête.

Télécharger plusieurs fichiers avec FTP dans PowerShell

Parfois, nous pouvons avoir besoin de télécharger plusieurs fichiers sur un serveur FTP. Télécharger des fichiers un par un prendra beaucoup de temps.

Ainsi, nous avons créé ce script PowerShell pour télécharger plusieurs fichiers sur un serveur FTP en une seule fois.

Tout d’abord, créez un objet System.Net.WebClient et assignez-le à une variable $WebClient.

$WebClient = New-Object System.Net.WebClient

Spécifiez le répertoire où tous les fichiers que vous souhaitez télécharger sont présents.

$Dir = "C:\New"

Ensuite, spécifiez l’URI de votre serveur FTP.

$FTP = "ftp://ftp_user:ftp_password@ftp_host/docs/"