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 esWinSCP-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.
(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.