Hello!
After some great help from you Martin last year I managed to get my scripts working in pipelies in devops (Azure).
However, the downloading\uploading part is taking a loong time when im trying to deploy new versions of my websites.
This is my current script – which is downloading files from a folder on production web app, to a staging slot before swapping the slots.
    $ftp = '$(hostname)'
$user = '$(produser)'
$pass = '$(prodpass)'
$folder = 'site/wwwroot/wwwroot/images/uploaded/*'
$sitenameFolder =  '$(sitename)'
$target = "C:\"+ $sitenameFolder+"\*"
Write-Host $target
 
# Load WinSCP .NET assembly
Add-Type -Path  "$(System.DefaultWorkingDirectory)/drop-yaml/drop-yaml/ftp/WinSCPnet.dll"
 
# Setup session options
$sessionOptions = New-Object WinSCP.SessionOptions -Property @{
    Protocol = [WinSCP.Protocol]::Ftp
    HostName = $ftp
    UserName = $user
    Password = $pass 
}
 
$session = New-Object WinSCP.Session
 
try
{
    # Connect
    $session.Open($sessionOptions)
 
    # Download files
 
    $transferResult = $session.GetFiles($folder, $target)
    $transferResult.Check()
 
    # Print results
    foreach ($transfer in $transferResult.Transfers)
    {
        Write-Host "Download of $transfer succeeded"
    }
}
finally
{
    # Disconnect, clean up
    $session.Dispose()
}
 
and for upload:
    $ftp = '$(hostname)'
$user = '$(destinationuser)'
$pass = '$(desinationpass)'
$folder = 'site/wwwroot/wwwroot/images/uploaded/*'
 
$sitenameFolder =  '$(sitename)'
$fromFolder= "C:\"+ $sitenameFolder+"\*"
 
Write-Host $fromFolder
 
Add-Type -Path "$(System.DefaultWorkingDirectory)/drop-yaml/drop-yaml/ftp/WinSCPnet.dll"
 
$sessionOptions = New-Object WinSCP.SessionOptions -Property @{
    Protocol = [WinSCP.Protocol]::Ftp
    HostName = $ftp
    UserName = $user
    Password = $pass 
}
 
$session = New-Object WinSCP.Session
 
try
{
    # Connect
    $session.Open($sessionOptions)
    $remotePath = $fromFolder
    $transferResult = $session.PutFiles(($fromFolder + "*.*"), ($folder + "*.*"), $False)
 
    foreach ($transfer in $transferResult.Transfers)
    {
        Write-Host "Uploaded of $transfer succeeded"
    }
}
finally
{
    # Disconnect, clean up
    $session.Dispose()
}
 
Is there any way to optimize this?