HOWTO · PowerShell

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

Ce tutoriel vous apprendra à télécharger des fichiers avec FTP dans PowerShell.

Sur cette page

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"

Après cela, créez l’objet System.URI et assignez-le à une variable, comme indiqué ci-dessous.

$URI = New-Object System.Uri($FTP)

L’étape finale consiste à utiliser la méthode UploadFile. Ensuite, le fichier sera téléchargé sur le serveur FTP.

$WebClient.UploadFile($URI, $File)

Le script complet est montré ci-dessous.

$WebClient = New-Object System.Net.WebClient
$File = "C:\New\car.png"
$FTP = "ftp://ftp_user:ftp_password@ftp_host/car.png"
$URI = New-Object System.Uri($FTP)
$WebClient.UploadFile($URI, $File)

Utilisez l’objet FtpWebRequest pour télécharger des fichiers avec FTP dans PowerShell

Cette méthode créera une instance d’un objet FtpWebRequest pour télécharger des fichiers sur le serveur FTP dans PowerShell.

Tout d’abord, définissez les détails FTP et de fichier.

$username = "ftp_user"
$password = "ftp_password"
$local_file = "C:\New\test.txt"
$remote_file = "ftp://ftp_host/test.txt"

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/"

Après cela, utilisez la boucle foreach pour exécuter la commande contre chaque élément dans le $Dir. Le code suivant télécharge tous les fichiers .txt dans le $Dir vers un serveur FTP $FTP.

foreach ($item in (Get-ChildItem $Dir "*.txt")) {
    "Uploading $item..."
    $URI = New-Object System.Uri($FTP + $item.Name)
    $WebClient.UploadFile($URI, $item.FullName)
}

Nous espérons que cet article vous a aidé à télécharger des fichiers avec un serveur FTP dans PowerShell.