Como Fazer o Upload de Arquivos com FTP no PowerShell

  1. Use o objeto System.Net.WebClient para enviar arquivos com FTP no PowerShell
  2. Use o objeto FtpWebRequest para enviar arquivos com FTP no PowerShell
  3. Enviar vários arquivos com FTP no PowerShell
Como Fazer o Upload de Arquivos com FTP no PowerShell

FTP (Protocolo de Transferência de Arquivos) é um protocolo de rede padrão usado para transferir arquivos entre um cliente e um servidor em uma rede de computadores. Um servidor FTP é uma solução comum para facilitar transferências de arquivos pela internet.

Podemos fazer upload de arquivos para um servidor FTP e baixar arquivos de um servidor FTP. O PowerShell é uma ferramenta de script que pode automatizar tarefas de upload e download FTP.

Este tutorial irá ensiná-lo a fazer upload de arquivos para um servidor FTP usando o PowerShell.

Use o objeto System.Net.WebClient para enviar arquivos com FTP no PowerShell

Podemos usar o objeto System.Net.WebClient para enviar arquivos para um servidor FTP. Ele envia ou recebe dados de qualquer recurso local, intranet ou Internet identificado por um URI.

Primeiro, precisamos criar uma instância de um objeto System.Net.WebClient e atribuí-lo a uma variável $WebClient. O cmdlet New-Object cria uma instância de objeto do .NET Framework ou COM.

$WebClient = New-Object System.Net.WebClient

Agora, vamos especificar um arquivo e um URI FTP. Use um nome de usuário e senha válidos para o servidor. Assim, substitua o valor em $FTP pelos detalhes do seu FTP.

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

Em seguida, crie um objeto FtpWebRequest e configure-o conforme mostrado abaixo. A propriedade Credentials é usada para especificar as credenciais para conectar ao servidor FTP.

A propriedade UseBinary define um valor Booleano para especificar o tipo de dado para transferências de arquivos. True indica que os dados a serem transferidos são binários, e false indica que os dados a serem transferidos são texto.

Esse método usa um modo de transferência binária para transferir arquivos sem modificação ou conversão. Como resultado, o mesmo arquivo no computador de origem será enviado para o servidor.

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

Ao usar um objeto FtpWebRequest para enviar um arquivo para um servidor, devemos escrever o conteúdo do arquivo no fluxo de requisição obtido ao chamar o método GetRequestStream.

Devemos escrever no fluxo e fechá-lo antes de enviar a solicitação.

Enviar vários arquivos com FTP no PowerShell

Às vezes, podemos precisar enviar vários arquivos para um servidor FTP. Fazer upload de arquivos um por um levará muito tempo.

Assim, criamos este script do PowerShell para enviar vários arquivos para um servidor FTP de uma só vez.

Primeiro, crie um objeto System.Net.WebClient e atribua-o a uma variável $WebClient.

$WebClient = New-Object System.Net.WebClient

Especifique o diretório onde todos os arquivos que você deseja enviar estão presentes.

$Dir = "C:\New"

Em seguida, especifique o URI do seu servidor FTP.

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