Cómo subir archivos con FTP en PowerShell
-
Usa el objeto
System.Net.WebClient
para subir archivos con FTP en PowerShell -
Usa el objeto
FtpWebRequest
para subir archivos con FTP en PowerShell - Subir múltiples archivos con FTP en PowerShell

FTP (Protocolo de Transferencia de Archivos) es un protocolo de red estándar utilizado para transferir archivos entre un cliente y un servidor en una red de computadoras. Un servidor FTP es una solución común para facilitar las transferencias de archivos a través de Internet.
Podemos subir archivos a un servidor FTP y descargar archivos de un servidor FTP. PowerShell es una herramienta de scripting que puede automatizar tareas de subida y descarga FTP.
Este tutorial te enseñará a subir archivos a un servidor FTP utilizando PowerShell.
Usa el objeto System.Net.WebClient
para subir archivos con FTP en PowerShell
Podemos usar el objeto System.Net.WebClient
para subir archivos a un servidor FTP. Envía o recibe datos de cualquier recurso local, intranet o de Internet identificado por una URI.
Primero, necesitamos crear una instancia de un objeto System.Net.WebClient
y asignarlo a una variable $WebClient
. El cmdlet New-Object
crea una instancia de un objeto .NET Framework o COM.
$WebClient = New-Object System.Net.WebClient
Ahora, especifiquemos un archivo y una URI FTP. Usa un nombre de usuario y una contraseña válidos para el servidor. Entonces, reemplaza el valor en $FTP
con tus detalles FTP.
$File = "C:\New\car.png"
$FTP = "ftp://ftp_user:ftp_password@ftp_host/car.png"
Luego crea un objeto FtpWebRequest
y configúralo como se muestra a continuación. La propiedad Credentials
se usa para especificar las credenciales para conectarse a un servidor FTP.
La propiedad UseBinary
establece un valor booleano para especificar el tipo de datos para las transferencias de archivos. True
indica que los datos a ser transferidos son binarios
, y false
indica que los datos a ser transferidos son texto
.
Este método utiliza un modo de transferencia binaria para transferir archivos sin modificación o conversión. Como resultado, el mismo archivo en la computadora de origen será subido al 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()
Al usar un objeto FtpWebRequest
para subir un archivo a un servidor, debemos escribir el contenido del archivo en el flujo de solicitud obtenido llamando al método GetRequestStream
.
Debemos escribir en el flujo y cerrarlo antes de enviar la solicitud.
Subir múltiples archivos con FTP en PowerShell
A veces, podríamos necesitar subir múltiples archivos a un servidor FTP. Subir archivos uno por uno llevará mucho tiempo.
Así que hemos creado este script de PowerShell para subir múltiples archivos a un servidor FTP de una sola vez.
Primero, crea un objeto System.Net.WebClient
y asígnalo a una variable $WebClient
.
$WebClient = New-Object System.Net.WebClient
Especifica el directorio donde se encuentran todos los archivos que deseas subir.
$Dir = "C:\New"
Luego especifica la URI de tu servidor FTP.
$FTP = "ftp://ftp_user:ftp_password@ftp_host/docs/"