我正在使用(或尝试) 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,但同样失败。
以下是执行流程任务编辑器的屏幕截图:
答案 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