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

Shell 脚本文件执行正常,但在SSIS中使用WinSCP失败,shell,ssis,sftp,winscp,Shell,Ssis,Sftp,Winscp,我正在使用(或尝试)WinSCP与公共SFTP服务器通信,以下载不同的数据。完美的情况是,我使用SSI从SFTP下载最新的文件,但我无法从winscp.net获取使用WindowsPowershell运行的示例 因此,另一个解决方案是运行一个简单的脚本来下载所有的压缩文件。这是我所拥有的,并且在执行时单独工作(.bat文件): winscp.exe/console/command“选项批处理中止”“选项确认关闭”“打开”sftp://myUserName@例如sftp.com“get*.zip

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

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

winscp.exe/console/command“选项批处理中止”“选项确认关闭”“打开”sftp://myUserName@例如sftp.com“get*.zip c:\”退出“

当我尝试在执行流程任务的SSIS中执行相同操作时,它失败了,并出现了一个信息非常丰富的错误:

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

我已经尝试了WinSCP.net文档中的所有内容(我想),但都没有成功。在
open
命令中也指定了hostkey,但同样失败

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

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

“C:\Program Files(x86)\WinSCP\WinSCP.exe”“/script=C:\Program Files(x86)\WinSCP\Script1.bat”
这可能会产生如下结果:

未知命令“winscp.exe”


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

/console/command“选项批处理中止”“选项确认关闭”“打开”sftp://myUserName@示例sftp.com“get*.zip c:\”退出
或者使您的
Script1.bat
(您应该更改扩展名)包含WinSCP命令:

选项批处理中止
选项确认关闭
打开sftp://myUserName@示例sftp.com
获取*.zip c:\
出口

执行SSIS的凭据是否有权访问
FTP
路径?是的,我想是的。。。我如何设置它呢?SSIS使用您的凭据运行。如果您的凭证具有权限,则应执行该凭证。否则,请尝试使用“以管理员身份运行”或其他有权访问
FTP
path的凭据打开SSI。我正在以管理员身份运行SSI。但这不是全部关于脚本文件和我指定用户名的open命令吗?这是我对FTP的唯一访问权限…如果您还没有完成,请阅读WinSCP常见问题解答,否则,请添加
/log=path\u to\u log\u file
开关,检查日志并将其发布到此处。耶稣基督。。我知道我在做傻事。。。你是个了不起的人!现在可以了。当然,如果你有时间的话,我明天再来解决一个问题。捐款马上就要来了:)如果我想改用我的脚本文件,我是否应该将其改为.txt,然后在SSIS参数中以相同的方式指向它?请更具体地说明“我的脚本”和“相同方式的参数”是什么意思。无论如何,你可以在我的回答中使用这两种方法。或者第三个选项,将SSI指向原始的
Script1.bat
(调用
winscp.exe
)。也就是说,在SSIS配置中没有直接提到
winscp.exe
。我使用了第一种方法,现在尝试使用您的第二个建议,即“让您的Script1.bat(您应该更改扩展名)包含winscp命令”。我应该将扩展名改为txt而不是bat吗?我对脚本编写非常陌生,顺便说一句:)如果您想使用脚本文件,请使用我的参数回答(启动
/console…
)和包含WinSCP命令的脚本文件(启动
选项批处理中止…
)。扩展在技术上并不重要,只是
.bat
是为Windows批处理文件保留的,因此使用它会让人感到困惑(例如,对其他人)