How can I show the file download process – POWERSHELL


I have a script that downloads some recordings from an ftp server and the downloads are saved in a folder inside a local path on my computer.

I have been able to trigger a message when all the recordings have been downloaded successfully, but I wanted instead to display a message every time each of the ftp recordings are downloaded. How can I do that?

**this is the script **

Add-Type -Path "C:\Program Files (x86)\WinSCP\WinSCPnet.dll"

$sessionOptions = New-Object WinSCP.SessionOptions -Property @{
    Protocol = [WinSCP.Protocol]::Ftp
    HostName = "ip of ftp"
    PortNumber = port number
    UserName = "user"
    Password = "credentials"

$session = New-Object WinSCP.Session


        $transferOptions = New-Object WinSCP.TransferOptions
        $transferOptions.TransferMode = [WinSCP.TransferMode]::Binary
        $transferResult = $session.GetFiles($remotePath, $localPath, $False, $transferOptions)


        foreach ($transfer in $transferResult.Transfers)
          Write-Host ("Download of {0} succeeded" -f $transfer.FileName)


I have looked for ways to do it but I can’t find the answer.

>Solution :

If you want to show just the names of the files as they finish transferring, use Session.FileTransferred event:

function FileTransferred
    if ($e.Error -eq $Null)
        Write-Host "Download of $($e.FileName) succeeded"
        Write-Host "Download of $($e.FileName) failed: $($e.Error)"

$session.add_FileTransferred( { FileTransferred($_) } )



$session.GetFiles($remotePath, $localPath, $False, $transferOptions).Check()

If you want to display progress of individual file transfers, you can use Session.FileTransferProgress.

Leave a Reply Cancel reply