Hello,
I have been searching through this forum and online but can't seem to find what is wrong.
Using the PowerShell code below, I can connect to the server, the files get copied but the do not get removed even though even the logfile says they are and the script output says:
Download of /---SRC---/testdir/blablabla-with reports-XXXXX-YYYYY.txt succeeded, removing from source
Removing of file /---SRC---/testdir/blablabla-with reports-XXXXX-YYYYY.txt succeeded
Please note the source system is running on AIX 7.1 and deleting the files using WinSCP GUI works.
Thanks for your time!
param (
$localPath = "\\---\Test",
$remotePath = "/---/testdir"
)
$transferOptions = New-Object WinSCP.TransferOptions
$transferOptions.TransferMode = [WinSCP.TransferMode]::Binary
$transferOptions.ResumeSupport.State = [WinSCP.TransferResumeSupportState]::Off
$transferOptions.FileMask = "*.*|.no_delete,*.part,*.tmp"
try
{
# Load WinSCP .NET assembly
Add-Type -Path "C:\Program Files (x86)\WinSCP\WinSCPnet.dll"
# Setup session options
$t = Get-StoredCredential QCPR
$sessionOptions = New-Object WinSCP.SessionOptions -Property @{
Protocol = [WinSCP.Protocol]::Sftp
HostName = "---"
UserName = $t.UserName
Password = $t.GetNetworkCredential().password
SshHostKeyFingerprint = "ecdsa-sha2-nistp256 256 vYoOOSOfaocnbbBjN78+IBvKQN2SSO3fpctvkvVM4u4"
}
$session = New-Object WinSCP.Session
$session.SessionLogPath = "c:\temp\scplog.log"
try
{
$session.Open($sessionOptions)
$synchronizationResult = $session.SynchronizeDirectories(
[WinSCP.SynchronizationMode]::Local, $localPath, $remotePath, $False)
# Deliberately not calling $synchronizationResult.Check
# as that would abort our script on any error.
# We will find any error in the loop below
# (note that $synchronizationResult.Downloads is the only operation
# collection of SynchronizationResult that can contain any items,
# as we are not removing nor uploading anything)
# Iterate over every download
foreach ($download in $synchronizationResult.Downloads)
{
# Success or error?
if ($download.Error -eq $Null)
{
Write-Host "Download of $($download.FileName) succeeded, removing from source"
# Download succeeded, remove file from source
$filename = [WinSCP.RemotePath]::EscapeFileMask($download.FileName)
$removalResult = $session.RemoveFiles($filename)
if ($removalResult.IsSuccess)
{
Write-Host "Removing of file $($download.FileName) succeeded"
}
else
{
Write-Host "Removing of file $($download.FileName) failed"
}
}
else
{
Write-Host (
"Download of $($download.FileName) failed: $($download.Error.Message)")
}
}
}
finally
{
$session.Dispose()
}
exit 0
}
catch
{
Write-Host "Error: $($_.Exception.Message)"
exit 1
}