#Preparing log
$ErrorActionPreference="SilentlyContinue"
Stop-Transcript | out-null
$ErrorActionPreference = "Continue"
#Log location file
Start-Transcript -path D:\Script\Log\Log.txt -append
try
{
# Load WinSCP .NET assembly
[Reflection.Assembly]::LoadFrom("C:\Program Files (x86)\WinSCP\WinSCPnet.dll") | Out-Null
# Set FTP data
$SessionOptions.DisableVersionCheck
$sessionOptions = New-Object WinSCP.SessionOptions
$sessionOptions.Protocol = [WinSCP.Protocol]::sftp
$sessionOptions.HostName = "hostname"
$sessionOptions.PortNumber = "xxxx"
$sessionOptions.UserName = "username"
$sessionOptions.Password = "password"
$sessionOptions.SshHostKeyFingerprint = "ssh-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
$session = New-Object WinSCP.Session
try
{
# Connect
$session.Open($sessionOptions)
$localPath = "D:\Script\*.xls"
$remotePath = "/"
$backupPath = "D:\Script\Upload"
#$aData = Get-Date
$destPath =
$backupPath +
(Split-Path -Path $transfer.FileName -Leaf) +
(Get-Date -Format "yyyy-MM-dd HH:mm:ss")
Move-Item $transfer.FileName $destPath
# Upload files, collect results
#$TransferOptions()
$transferOptions = New-Object WinSCP.TransferOptions
$transferResult = $session.PutFiles($localPath, $remotePath)
# Files itineration
foreach ($transfer in $transferResult.Transfers)
{
# Correct o error?
if ($transfer.Error -eq $Null)
{
Write-Host ("${aData} - File {0} was uploaded and moved to backup folder" -f
$transfer.FileName)
# If, Ok move to backup folder
Move-Item $transfer.FileName $backupPath -force
}
else
{
Write-Host ("${aData} - File {0} with error: {1}" -f
$transfer.FileName, $transfer.Error.Message)
}
}
}
finally
{
# Disconnect and clean
$session.Dispose()
}
exit 0
}
catch [Exception]
{
Write-Host $_.Exception.Message
exit 1
}
# Stop log writing
Stop-Transcript