Uploading and Downloading files from Secure FTP

Hi All,

I have shared two methods in the past in relation to FTP, first one is for uploading files to FTP https://techwizard.cloud/2014/03/05/upload-files-to-ftp-server/

and second one for downloading files from Secure FTP & monitoring it.

https://techwizard.cloud/2014/11/21/monitoring-secure-ftp-file-uploads/

As we have to use some secure FTP client so I have used Curl http://curl.haxx.se/ in this case, but today we will use winscp which is the most popular client out there.

I have updated the old script on Microsoft Script gallery as well to include  winscp method.

https://techwizard.cloud/2014/11/21/monitoring-secure-ftp-file-uploads/

Now lets look at the powershell script to upload the file to secure FTP.

Extract the zip file from below link :

https://github.com/VikasSukhija/Downloads/blob/master/uploadsftp.zip

  • FileV3Upload is the folder which contains FileV3.csv file that will be uploaded to secureftp if the file is of today’s time-stamp.

We have used this script to upload the file which is daily copied to this folder & if the new file is not arrived than it will not be uploaded.

  • Command1.txt contains secureftp details to upload the files (please alter it accordingly)

# Automatically abort script on errors

option batch abort
# Disable overwrite confirmations that conflict with the previous

option confirm off
# Connect

open sftp://user:password@xxx.xxx.xxx.xxx
# Upload the file to current working directory

put .\FileV3Upload\FileV3.csv -nopreservetime -nopermissions
# Disconnect

close
# Exit WinSCP

exit

  • Update FileV3-Upload.ps1 with smtp details.

$smtpServer = “smtpserver”

$fromadd = “DoNotReply@labtest.com”

$email1 = “VikasSukhija@labtest.com”

Now you just have to schedule the batch file & daily file will get uploaded to secure FTP.

Please rate the contribution if it works for you 🙂

###################################################################### 
###################################################################### 
#               Author: Vikas Sukhija 
#               Date:- 12/22/2014 
#        Modified:- 07/23/2015 (updated to use WINSCP) 
#               Description:- This script will upload the file to sftp 
#                
###################################################################### 
######upload file from sftp########################################## 
 
$date = get-date -format d 
$date = $date.ToString().Replace(“/”, “-”) 
$time = get-date -format t 
$time = $time.ToString().Replace(":""-"$time = $time.ToString().Replace(" """) 
 
$logs = ".\Logs" + "\" + "Powershell" + $date + "_" + $time + "_.txt" 
 
$smtpServer = "smtpserver" 
$fromadd = "DoNotReply@labtest.com" 
$email1 = "VikasSukhija@labtest.com" 
 
$date1=Get-Date -Hour 0 -Minute 0 -Second 0 
 
Start-Transcript -Path $logs  
 
 
 
$lwrt=Get-ChildItem .\FileV3Upload\FileV3.csv 
 
if ($error -ne $null) 
      { 
#SMTP Relay address 
$msg = new-object Net.Mail.MailMessage 
$smtp = new-object Net.Mail.SmtpClient($smtpServer#Mail sender 
$msg.From = $fromadd 
#mail recipient 
$msg.To.Add($email1) 
 
$msg.Subject = "Ftp file Monitoring script error" 
$msg.Body = $error 
$smtp.Send($msgexit 
       } 
 
if($lwrt.LastWriteTime -ge "$date1") 
{ 
Write-host "File for Today found and will be uploaded to sftp" -ForegroundColor green 
 
.\winscp556\WinSCP.com /script=command1.txt 
 
} 
else 
{ 
write-host "Today's date file not found on share" -ForegroundColor yellow 
$msg = new-object Net.Mail.MailMessage 
$smtp = new-object Net.Mail.SmtpClient($smtpServer#Mail sender 
$msg.From = $fromadd 
#mail recipient 
$msg.To.Add($email1) 
 
$msg.Subject = "Today's date file not found on share" 
$msg.Body = "Today's date file not found on share" 
$smtp.Send($msg) 
 
} 
 
######################################################################## 
if ($error -ne $null) 
      { 
#SMTP Relay address 
$msg = new-object Net.Mail.MailMessage 
$smtp = new-object Net.Mail.SmtpClient($smtpServer#Mail sender 
$msg.From = $fromadd 
#mail recipient 
$msg.To.Add($email1) 
 
$msg.Subject = "Ftp file Monitoring script error" 
$msg.Body = $error 
$smtp.Send($msg) 
       } 
 
Stop-Transcript 
 
 
#############################################################################

Regards

Sukhija Vikas

http://techwizard.cloud

Leave a comment