Powershell es una herramienta muy poderosa, es una evolución del cmd tradicional de windows. Este post intenta dar un simple ejemplo de su capacidad, en lo particular la conexión a un servicio SFTP.
Mi necesidad era poder descargar los archivos de audio de un servidor SFTP de manera automática, sin la intervención del usuario, para ello se realizó el siguiente script y se lo configuró en el Programador de Tareas de Windows.
Para el script se utilizó el módulo Posh-SSH (https://github.com/darkoperator/Posh-SSH).
Se puede utilizar cualquier editor de texto para realizar el script, como si fuera un archivo .bat, pero en éste caso se trata de un archivo .ps1, recomiendo la utilización de la herramienta Windows Power Shell ISE, es un entorno preparado para ésto con todos los aditamentos, ejecución parcial del código, ayuda de funciones, vista de la salida, etc.
A continuación les dejo el script
Script - Codigo
$sftp = "IP_SERVER"
$usr = 'Usuario_FTP'
$pwd = 'Password_FTP'
$salida = "PATH de descarga de los archivos"
$securePwd = ConvertTo-SecureString $pwd -AsPlainText -Force
#Creo la credencial
$credentials = New-Object System.Management.Automation.PSCredential($usr, $securePwd)
$session = New-SFTPSession -ComputerName $sftp -Credential $credentials -AcceptKey -Force
Get-SFTPChildItem $session | ForEach-Object{
if ($_.FullName -like '*.WAV') #Solo me interesan los archivos de audio
{
Get-SFTPFile $session $_.FullName -LocalPath $salida -Overwrite #Descargo el archivo
Remove-SFTPItem $session $_.FullName -Force #Borro el archivo del servidor
}
Write-Output $_.FullName
}
Remove-SFTPSession $session -Verbose
Script - Datos a cargar
$sftp = "IP_SERVER"
$usr = 'Usuario_FTP'
$pwd = 'Password_FTP'
$salida = "PATH de descarga de los archivos"
Éstas cuatro variables son los datos que se deben configurar para que funcione el script, creo que están bastante claros y descriptivos los nombre.
Problemas
Los problemas que me surgieron al implementar el script, fueron.
- Versión Instalada de PowerShell en windows: Se necesita tener la versión 5.x
- Permitir la ejecución de script en powerShell
- Al configurar el script para que se ejecute con el programador de tareas, se tienen que poner dentro de la carpeta Microsoft.