(Created page with "==WinSCP automation with powershell== Powershell can be used to automate the upload and download of files from sftp servers using the .NET assembly === Setup Session: === Setup the SFTP session using the following code, you will need to have the winscp automation package stored on the server somewhere:<syntaxhighlight lang="powershell"> # Define the path to the WinSCP .NET assembly DLL $winscpPath = "C:\Automation\WinSCP-6.1.2-Automation\WinSCPnet.dll" # Update this pa...") |
No edit summary |
||
Line 33: | Line 33: | ||
$session.PutFiles("$uploadpath\*", "$uploadDestination/", $false, $transferOptions) | $session.PutFiles("$uploadpath\*", "$uploadDestination/", $false, $transferOptions) | ||
</syntaxhighlight>the parameters are as follows: local path to files to upload, destination directory on sftp server, remove files from source on successful transfer, transfer options | </syntaxhighlight>the parameters are as follows: local path to files to upload, destination directory on sftp server, remove files from source on successful transfer, transfer options | ||
=== Download files === | |||
files can be downloaded using the GetFiles method:<syntaxhighlight lang="powershell"> | |||
$transferOptions = New-Object WinSCP.TransferOptions | |||
$transferOptions.TransferMode = [WinSCP.TransferMode]::Binary | |||
$session.GetFiles($($file.FullName), "$localPath\$($file.name)", $false, $transferOptions) | |||
</syntaxhighlight> |
Latest revision as of 13:36, 4 December 2023
WinSCP automation with powershell
Powershell can be used to automate the upload and download of files from sftp servers using the .NET assembly
Setup Session:
Setup the SFTP session using the following code, you will need to have the winscp automation package stored on the server somewhere:
# Define the path to the WinSCP .NET assembly DLL
$winscpPath = "C:\Automation\WinSCP-6.1.2-Automation\WinSCPnet.dll" # Update this path as needed
# Load the WinSCP .NET assembly
Add-Type -Path $winscpPath
# Create a SessionOptions object with SFTP settings
$sessionOptions = New-Object WinSCP.SessionOptions -Property @{
Protocol = [WinSCP.Protocol]::Sftp
HostName = $sftpHost
PortNumber = $sftpPort
UserName = $sftpUsername
Password = $sftpPassword
SshHostKeyFingerprint = "<ssh fingerprint of the sftp server>"
}
Once you have the session options configured you can connect to the SFTP server using the following command:
# Connect to the SFTP server
$session.Open($sessionOptions)
Get details of files on server
Use the enumerateremotefiles method to get the details of the files on the sftp server
$remoteFiles = $session.EnumerateRemoteFiles($remotePath, $null, [WinSCP.EnumerationOptions]::AllDirectories)
Upload Files
You can upload files using the PutFiles method:
$transferOptions = New-Object WinSCP.TransferOptions
$transferOptions.TransferMode = [WinSCP.TransferMode]::Binary
$session.PutFiles("$uploadpath\*", "$uploadDestination/", $false, $transferOptions)
the parameters are as follows: local path to files to upload, destination directory on sftp server, remove files from source on successful transfer, transfer options
Download files
files can be downloaded using the GetFiles method:
$transferOptions = New-Object WinSCP.TransferOptions
$transferOptions.TransferMode = [WinSCP.TransferMode]::Binary
$session.GetFiles($($file.FullName), "$localPath\$($file.name)", $false, $transferOptions)