Differences

This shows you the differences between the selected revisions of the page.

2013-05-23 2013-05-23
c# + vb.net examples (martin) powershell example (martin)
Line 158: Line 158:
    Private Shared _lastFileName As String     Private Shared _lastFileName As String
End Class End Class
 +</code>
 +
 +==== [[powershell]] PowerShell Example ====
 +Learn more about [[library_powershell|using WinSCP .NET assembly from PowerShell]].
 +
 +&beta (* .dll *)
 +<code powershell>
 +# Load WinSCP .NET assembly
 +# Use "winscp.dll" for the releases before the latest beta version.
 +[Reflection.Assembly]::LoadFrom("WinSCPnet.dll") | Out-Null
 +
 +# Session.FileTransferProgress event handler
 +
 +function FileTransferProgress
 +{
 +    Param($e)
 +
 +    # New line for every new file
 +    if (($script:lastFileName -ne $Null) -and
 +        ($script:lastFileName -ne $e.FileName))
 +    {
 +        Write-Host
 +    }
 +
 +    # Print transfer progress
 +    Write-Host -NoNewline ("`r{0} ({1:P0})" -f $e.FileName, $e.FileProgress)
 +
 +    # Remember a name of the last file reported
 +    $script:lastFileName = $e.FileName
 +}
 +
 +# Main script
 +
 +$script:lastFileName = $Null
 +
 +try
 +{
 +    $sessionOptions = New-Object WinSCP.SessionOptions
 +    $sessionOptions.Protocol = [WinSCP.Protocol]::Sftp
 +    $sessionOptions.HostName = "example.com"
 +    $sessionOptions.UserName = "user"
 +    $sessionOptions.Password = "mypassword"
 +    $sessionOptions.SshHostKeyFingerprint = "ssh-rsa 1024 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx"
 +
 +    $session = New-Object WinSCP.Session
 +    try
 +    {
 +        # Will continuously report progress of transfer
 +        $session.add_FileTransferProgress( { FileTransferProgress($_) } )
 +
 +        # Connect
 +        $session.Open($sessionOptions)
 +
 +        # Download the file and throw on any error
 +        $session.GetFiles("/home/martin/public_html/", "d:\backup\").Check()
 +    }
 +    finally
 +    {
 +        # Terminate line after the last file (if any)
 +        if ($script:lastFileName -ne $Null)
 +        {
 +            Write-Host
 +        }
 +
 +        # Disconnect, clean up
 +        $session.Dispose()
 +    }
 +
 +    exit 0
 +}
 +catch [Exception]
 +{
 +    Write-Host $_.Exception.Message
 +    exit 1
 +}
</code> </code>

Last modified: by martin