If your transfer automation task running under Windows Scheduler, SSIS or similar service does not work, it may not be immediately obvious what is wrong. Particularly because output of WinSCP process is hidden.
- Testing the Task Independently
- Inspecting Session Log
- Inspecting Output Log
- Testing File Access Permissions
- Further Reading
First step in debugging, is to make sure the task works when executed independently. Execute the exact command that you have configured in Windows Scheduler/SSIS in Windows Command prompt.
For example, if in Windows Scheduler you have
"C:\Program Files (x86)\WinSCP\WinSCP.exe" in Program/script and
/script="c:\script\example.txt" in Add arguments, try to execute following full command in Command prompt:
"C:\Program Files (x86)\WinSCP\WinSCP.exe" /script="c:\script\example.txt"
If the task works correctly from Command prompt, see My script works fine when executed manually, but fails or hangs when run by Windows Scheduler, SSIS or other automation service. What am I doing wrong?
If the task fails even when run from Command prompt, inspect a console output of the task for any error. If you see an error, check list of common error messages or search this website for the error. To check for an error in console output, it is recommended to use
If the problem is not obvious from the output, enable logging to a file as described below.
Next step is to enable logging to file (you should have logging enabled anyway) and inspect the log. Use
/log command-line parameter.
For example in Windows Scheduler the Add arguments may look like:
Full command to be executed from Command prompt is:
"C:\Program Files (x86)\WinSCP\WinSCP.exe" /script="c:\script\example.txt" /log="c:\script\example.log"
If a session log file is not even created, when executed from Windows Scheduler/SSIS, although the same WinSCP command and logging is working, when executed manually on command-line, there can be some problem in the Windows Scheduler/SSIS environment that prevents WinSCP from starting or writing to the log.
To debug such problems, wrap WinSCP command to a batch file and redirect WinSCP console output to a file. Make sure you use a console interface tool
winscp.com, instead of
winscp.exe. It is also useful to log something to the output file before running WinSCP, to verify that output logging is working.
The batch file can look like:
@echo off ( echo Starting WinSCP "C:\Program Files (x86)\WinSCP\WinSCP.com" /script="c:\script\example.txt" /log="c:\script\example.log" echo WinSCP done ) > C:\script\example.out 2>&1
Make sure you use a path for the
example.out, where Windows Scheduler/SSIS have a write access to. Check an output logged to
example.out for any problems. If the
example.out is not even created, the problem is not with WinSCP.
If it turns out that WinSCP cannot read or write local files, it is usually because the local account that runs the Windows Scheduler/SSIS does not have permissions to access those files or their containing folders. Try reading or writing those files in a wrapper batch file (see the previous section), to verify that you get the same problem even without WinSCP.
@echo off ( echo Testing reading of a file copy C:\source\file.txt %TEMP% echo Testing writing of a file echo Dummy contents > C:\destination\file.txt echo Starting WinSCP "C:\Program Files (x86)\WinSCP\WinSCP.com" /script="c:\script\example.txt" /log="c:\script\example.log" echo WinSCP done ) > C:\script\example.out 2>&1