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.
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 1024 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 sessionOptions As New SessionOptions; With sessionOptions .Protocol = Protocol.Sftp .HostName = "example.com" .UserName = "user" .Password = "mypassword" .SshHostKeyFingerprint = "ssh-rsa 1024 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx" End With Using session As Session = New Session ' Connect session.Open(sessionOptions) ' 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) session.ExecuteCommand(dumpCommand) ' Download the database dump session.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
try { # Load WinSCP .NET assembly # Use "winscp.dll" for the releases before the latest beta version. [Reflection.Assembly]::LoadFrom("WinSCPnet.dll") | Out-Null # 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 1024 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