Saltar al contenido

Subir archivo a SFTP usando PowerShell

Te sugerimos que pruebes esta solución en un ambiente controlado antes de pasarlo a producción, saludos.

Solución:

No nos dijiste qué problema en particular tienes con WinSCP, así que solo puedo repetir lo que está en la documentación de WinSCP.

  • Descargue el ensamblado WinSCP .NET.
    El último paquete a partir de ahora es WinSCP-5.17.10-Automation.zip;

  • Extrae el .zip archivar a lo largo de su secuencia de comandos;

  • Use un código como este (basado en el ejemplo de carga oficial de PowerShell):

      # Load WinSCP .NET assembly
      Add-Type -Path "WinSCPnet.dll"
    
      # Setup session options
      $sessionOptions = New-Object WinSCP.SessionOptions -Property @
          Protocol = [WinSCP.Protocol]::Sftp
          HostName = "example.com"
          UserName = "user"
          Password = "mypassword"
          SshHostKeyFingerprint = "ssh-rsa 2048 xxxxxxxxxxx...="
      
    
      $session = New-Object WinSCP.Session
    
      try
      
          # Connect
          $session.Open($sessionOptions)
    
          # Upload
          $session.PutFiles("C:FileDumpexport.txt", "/Outbox/").Check()
      
      finally
      
          # Disconnect, clean up
          $session.Dispose()
      
    

Puede hacer que WinSCP genere el script de PowerShell para la carga por usted:

  • Inicie sesión en su servidor con WinSCP GUI;
  • Navegue hasta el directorio de destino en el panel de archivos remotos;
  • Seleccione el archivo para cargar en el panel de archivos local;
  • invocar el Subir dominio;
  • En el cuadro de diálogo Opciones de transferencia, vaya a Ajustes de transferencia > Generar código;
  • En el cuadro de diálogo Generar código de transferencia, seleccione el código ensamblador .NET pestaña;
  • Elegir Potencia Shell idioma.

Obtendrá un código como el anterior con todas las configuraciones de sesión y transferencia completadas.

Generar diálogo de código de transferencia

(Soy el autor de WinSCP)

Actualmente no hay un método de PowerShell incorporado para realizar la parte SFTP. Tendrá que usar algo como psftp.exe o un módulo de PowerShell como Posh-SSH.

Aquí hay un ejemplo usando Posh-SSH:

# Set the credentials
$Password = ConvertTo-SecureString 'Password1' -AsPlainText -Force
$Credential = New-Object System.Management.Automation.PSCredential ('root', $Password)

# Set local file path, SFTP path, and the backup location path which I assume is an SMB path
$FilePath = "C:FileDumptest.txt"
$SftpPath = '/Outbox'
$SmbPath = '\filer01Backup'

# Set the IP of the SFTP server
$SftpIp = '10.209.26.105'

# Load the Posh-SSH module
Import-Module C:TempPosh-SSH

# Establish the SFTP connection
$ThisSession = New-SFTPSession -ComputerName $SftpIp -Credential $Credential

# Upload the file to the SFTP path
Set-SFTPFile -SessionId ($ThisSession).SessionId -LocalFile $FilePath -RemotePath $SftpPath

#Disconnect all SFTP Sessions
Get-SFTPSession | %  Remove-SFTPSession -SessionId ($_.SessionId) 

# Copy the file to the SMB location
Copy-Item -Path $FilePath -Destination $SmbPath

Algunas notas adicionales:

  • Tendrá que descargar el módulo Posh-SSH que puede instalar en el directorio de su módulo de usuario (por ejemplo, C:Usersjon_dechiroDocumentsWindowsPowerShellModules) y simplemente cargarlo usando el nombre o ponerlo en cualquier lugar y cargarlo como yo tiene en el código anterior.
  • Si tener las credenciales en el script no es aceptable, deberá usar un archivo de credenciales. Si necesita ayuda con eso, puedo actualizar con algunos detalles o indicarle algunos enlaces.
  • Cambie las rutas, IP, etc. según sea necesario.

Eso debería darle un punto de partida decente.

Usando pscp.exe de PuTTY (que tengo en un $env:path directorio):

pscp -sftp -pw passwd c:filedump* [email protected]
:/Outbox/ mv c:filedump* c:backup*

Aquí puedes ver las reseñas y valoraciones de los usuarios

Si te sientes a gusto, puedes dejar un post acerca de qué le añadirías a este escrito.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *