Delete files on upload the files
[Reflection.Assembly]::LoadFrom("C:\Program Files\WinSCP\WinSCPnet.dll") | Out-Null
# Session.FileTransferred event handler
function FileTransferred
{
Param($e)
if ($e.Error -eq $Null)
{
Write-Host ("Upload of {0} succeeded" -f $e.FileName)
#If Download succeeded, remove the files from source
}
else
{
Write-Host ("Upload of {0} failed: {1}" -f $e.FileName, $e.Error)
}
if ($e.Chmod -ne $Null)
{
if ($e.Chmod.Error -eq $Null)
{
Write-Host ("Permisions of {0} set to {1}" -f $e.Chmod.FileName, $e.Chmod.FilePermissions)
}
else
{
Write-Host ("Setting permissions of {0} failed: {1}" -f $e.Chmod.FileName, $e.Chmod.Error)
}
}
else
{
Write-Host ("Permissions of {0} kept with their defaults" -f $e.Destination)
}
if ($e.Touch -ne $Null)
{
if ($e.Touch.Error -eq $Null)
{
Write-Host ("Timestamp of {0} set to {1}" -f $e.Touch.FileName, $e.Touch.LastWriteTime)
}
else
{
Write-Host ("Setting timestamp of {0} failed: {1}" -f $e.Touch.FileName, $e.Touch.Error)
}
}
else
{
# This should never happen with Session.SynchronizeDirectories
Write-Host ("Timestamp of {0} kept with its default (current time)" -f $e.Destination)
}
foreach ($e in $synchronizationResult.uploads)
{
$removalResult = $session.RemoveFiles($session.EscapeFileMask($e.FileName))
if ($removalResult.IsSuccess)
{
Write-Host ("Removing of file {0} succeeded" -f
$e.FileName)
}
else
{
Write-Host ("Removing of file {0} failed" -f
$e.FileName)
}}
}
# Main script
try
{
$sessionOptions = New-Object WinSCP.SessionOptions
$sessionOptions.Protocol = [WinSCP.Protocol]::sftp
$sessionOptions.PortNumber = 9922
$sessionOptions.Timeout = "120"
$sessionOptions.HostName = "123456"
$sessionOptions.UserName = "123456"
$sessionOptions.Password = "123456"
$sessionOptions.SshHostKeyFingerprint = "123456"
$session = New-Object WinSCP.Session
try
{
$localPath = "C:\Users\rahimm\Desktop\TestSftpLocation\"
$remotePath = "/Oresponces/"
# Will continuously report progress of synchronization
$session.add_FileTransferred( { FileTransferred($_) } )
# Connect
$session.Open($sessionOptions)
# Synchronize files
$synchronizationResult = $session.SynchronizeDirectories(
[WinSCP.SynchronizationMode]::Remote, $localPath, $remotePath, $False)
# Throw on any error
$synchronizationResult.Check()
}
finally
{
# Disconnect, clean up
$session.Dispose()
}
exit 0
}
catch [Exception]
{
Write-Host $_.Exception.Message
exit 1
}