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.
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.
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($msg) exit } 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