This is an old revision of the document!

Session.ExecuteCommand Method

Executes command on the remote server.

Advertisement

Syntax

C#
public CommandExecutionResult ExecuteCommand(string command)
VB.NET
Public Function ExecuteCommand(ByVal command As String) As CommandExecutionResult

Parameters

Name Description
string command Command to execute.

Return Value

CommandExecutionResult with command output.

Exceptions

Exception Condition
InvalidOperationException Session is not opened.
SessionLocalException Error communicating with winscp.com.
See the exception documentation for details.
SessionRemoteException Session has failed.
Command has failed.
See the exception documentation for details.
TimeoutException Timeout waiting for winscp.com to respond.

Advertisement

Remarks

With SFTP and SCP protocols, executes arbitrary remote shell command. With FTP protocol, executes a protocol command.

With SFTP protocol, that does not allow execution of arbitrary remote command, separate shell session will be automatically opened.

Not supported with WebDAV protocol.

The command must not require user input.

Example

C# Example

using System;
using WinSCP;
 
class Example
{
    public static int Main()
    {
        try
        {
            // Setup session options
            SessionOptions sessionOptions = new SessionOptions {
                Protocol = Protocol.Sftp,
                HostName = "example.com",
                UserName = "user",
                Password = "mypassword",
                SshHostKeyFingerprint = "ssh-rsa 2048 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx"
            };
 
            using (Session session = new Session())
            {
                // Connect
                session.Open(sessionOptions);
 
                // Execute mysqldump on the server to dump all MySQL databases and compress the results
                const string dbUsername = "USERNAME";
                const string dbPassword = "PASSWORD";
                const string tempFilePath = "/tmp/all_databases.gz";
 
                string dumpCommand =
                    string.Format("mysqldump --opt -u {0} --password={1} --all-databases | gzip > {2}",
                                  dbUsername, dbPassword, tempFilePath);
                session.ExecuteCommand(dumpCommand);
 
                // Download the database dump
                session.GetFiles(tempFilePath, "D:\\dbbackup\\").Check();
            }
 
            return 0;
        }
        catch (Exception e)
        {
            Console.WriteLine("Error: {0}", e);
            return 1;
        }
    }
}

Advertisement

VB.NET Example

Imports System
Imports WinSCP
 
Friend Class Example
 
    Public Shared Function Main() As Integer
 
        Try 
            ' Setup session options
            Dim mySessionOptions As New SessionOptions
            With mySessionOptions 
                .Protocol = Protocol.Sftp
                .HostName = "example.com"
                .UserName = "user"
                .Password = "mypassword"
                .SshHostKeyFingerprint = "ssh-rsa 2048 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx"
            End With
 
            Using mySession As Session = New Session
                ' Connect
                mySession.Open(mySessionOptions)
 
                ' Execute mysqldump on the server to dump all MySQL databases and compress the results
                Const dbUsername As String = "USERNAME"
                Const dbPassword As String = "PASSWORD"
                Const tempFilePath As String = "/tmp/all_databases.gz"
 
                Dim dumpCommand As String = _
                    String.Format("mysqldump --opt -u {0} --password={1} --all-databases | gzip > {2}", _
                        dbUsername, dbPassword, tempFilePath)
                mySession.ExecuteCommand(dumpCommand)
 
                ' Download the database dump
                mySession.GetFiles(tempFilePath, "D:\dbbackup\").Check()
            End Using
 
            Return 0
        Catch e As Exception
            Console.WriteLine("Error: {0}", e)
            Return 1
        End Try
 
    End Function
 
End Class

Advertisement

PowerShell Example

Learn more about using WinSCP .NET assembly from PowerShell.

try
{
    # Load WinSCP .NET assembly
    Add-Type -Path "WinSCPnet.dll"
 
    # Setup session options
    $sessionOptions = New-Object WinSCP.SessionOptions
    $sessionOptions.Protocol = [WinSCP.Protocol]::Sftp
    $sessionOptions.HostName = "example.com"
    $sessionOptions.UserName = "user"
    $sessionOptions.Password = "mypassword"
    $sessionOptions.SshHostKeyFingerprint = "ssh-rsa 2048 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx"
 
    $session = New-Object WinSCP.Session
 
    try
    {
        # Connect
        $session.Open($sessionOptions)
 
        # Execute mysqldump on the server to dump all MySQL databases and compress the results
        $dbUsername = "USERNAME"
        $dbPassword = "PASSWORD"
        $tempFilePath = "/tmp/all_databases.gz"
 
        $dumpCommand =
            ("mysqldump --opt -u {0} --password={1} --all-databases | gzip > {2}" -f
                $dbUsername, $dbPassword, $tempFilePath)
        $session.ExecuteCommand($dumpCommand)
 
        # Download the database dump
        $session.GetFiles($tempFilePath, "D:\dbbackup\").Check()
 
    finally
    {
        # Disconnect, clean up
        $session.Dispose()
    }
 
    exit 0
}
catch [Exception]
{
    Write-Host $_.Exception.Message
    exit 1
}

Advertisement

Last modified: by martin