脚本文件执行正常但在SSIS中失败,使用WinSCP

时间:2014-01-23 09:16:51

标签: shell ssis sftp winscp

我正在使用(或尝试) WinSCP 与公共SFTP服务器进行通信以下载不同的数据。完美的场景是我使用SSIS从SFTP下载最新文件,但我无法从使用WindowsPowershell运行的winscp.net获取示例。

另一个解决方案是运行一个简单的脚本,下载所有 zip文件。这是我拥有的,并且在执行时(.bat文件)单独起作用:

  

winscp.exe /console /command "option batch abort" "option confirm off" "open sftp://myUserName@exampleSFTP.com" "get *.zip c:\" "exit"

当我尝试在执行过程任务中的SSIS中执行相同操作时,它失败并出现信息错误:

  

流程退出代码为“1”,而预期为“0”

我已经尝试过WinSCP.net文档中的所有内容(我猜)但没有任何效果。还在open命令中指定了hostkey,但同样失败。

以下是执行流程任务编辑器的屏幕截图: enter image description here

1 个答案:

答案 0 :(得分:2)

您正在尝试让WinSCP运行Windows批处理文件。它实际上意味着您要求WinSCP运行WinSCP。那显然失败了。如果您尝试执行要求SSIS运行的命令,您会看到自己:

"C:\Program Files (x86)\WinSCP\WinSCP.exe" "/script=C:\Program Files (x86)\WinSCP\Script1.bat"

这可能会输出如下内容:

  

未知命令'winscp.exe'


您需要将WinSCP参数从Script1.bat移动到SSIS Arguments参数中:

/console /command "option batch abort" "option confirm off" "open sftp://myUserName@exampleSFTP.com" "get *.zip c:\" "exit"

或者让你的Script1.bat(你应该更改扩展名)包含WinSCP命令:

option batch abort
option confirm off
open sftp://myUserName@exampleSFTP.com
get *.zip c:\
exit