.NET 'Transfers.Filename' returns wrong list

Advertisement

cognitive1
Joined:
Posts:
3
Location:
United States

.NET 'Transfers.Filename' returns wrong list

I have a known-good PowerShell script which uses the WinSCP .NET component. I added a new function to move successfully uploaded files to an archive folder, and it blew-up on me. I think I have identified the problem, related to the NewerOnly parameter. I have listed the pertinent commands below; I skipped all the other stuff but I can post more detail if you're unable to recreate the problem.
$Session.AddRawConfiguration("Interface\CopyParam\NewerOnly","1")
$TransferResult = $Session.PutFiles("$($Transfer[0])", "$($Transfer[1])", $DeleteAfterTransfer, $transferOptions)
$FilesToArchive = Get-ChildItem $TransferResult.Transfers.FileName
The problem occurs when there are files in the local source dir but they are skipped because they already exist in the remote target (the NewerOnly Session option). In this situation I am expecting the .Transfers.Filename method to return a null – but instead it returned the contents of the current script directory. So my testing resulted in the upload script etc all being moved into the upload-file archive; oops

Can you verify if this is a bug in the Transfers and/or Filename method?
Is there a better way for me to check which files were, in fact, transferred?

Thank you for your assistance.

Reply with quote

Advertisement

cognitive1
Joined:
Posts:
3
Location:
United States

Hmm, so I'm looking at my new script and see an important detail. Immediately after I call Session.Putfiles I do the following if-then check – and it works successfully, i.e., the Transfers.FileName method appears to correctly return a null/false:
If ( !($TransferResult.Transfers.FileName) ) { Write-Host "no source files found"}
The issue occurs when I use that same method with Get-ChildItem. So maybe I'm just misusing the results? Either way, it suggests that my workaround is to do the same if-then before starting my archive function.

Reply with quote

cognitive1
Joined:
Posts:
3
Location:
United States

Sorry for the spam, I'll just keep answering myself :-)

The following code demonstrates my mistake – if you feed Get-ChildItem a null it returns the current directory; I thought it would return null itself.
Get-ChildItem $null
(returns the current directory)

CONCLUSION: not a bug, just a PowerShell coding mistake.

Reply with quote

Advertisement

You can post new topics in this forum