【发布时间】:2017-07-24 21:14:45
【问题描述】:
我在 .bat 中有以下内容(这有效):
"%winscp%" /ini=nul ^
/log=C:\TEMP\winscplog.txt ^
/command "open scp://goofy:changeme@10.61.10.225/ -hostkey=""ssh-rsa 2048 d4:1c:1a:4c:c3:60:d5:05:12:02:d2:d8:d6:ae:6c:5d""" ^
"put ""%outfile%"" /home/public/somedir/somesubdir/%basename%" ^
"exit"
我试图将它复制到这样的 powershell 脚本中:
& $winscp "/ini=nul" `
"/log=C:\TEMP\winscplog.txt" `
"/command" 'open sftp://goofy:changeme@10.61.10.225/ -hostkey="ssh-rsa 2048 d4:1c:1a:4c:c3:60:d5:05:12:02:d2:d8:d6:ae:6c:5d"' `
"put `"" + $outfile + "`" /home/public/somedir/somesubdir/" + $basename `
"exit"
当我运行 .bat 脚本时,文件将上传。
当我运行 .ps1 脚本时,我得到 Host key does not match configured key ssh-rsa
我怀疑我没有在 powershell 中正确格式化命令,并且在 winscp 看到它时主机密钥已被破坏。
我检查了日志,显示的只是主机的主机密钥。它没有显示我正在使用的密钥。我通过更改我的主机并注意到它没有出现在日志中来确认这一点。我比较了 .bat 和 .ps1 之间的日志,区别在于 ps1 以上述错误终止。
winscp 是一个 sftp 实用程序。
【问题讨论】:
-
日志是否显示指定的键(它认为)?您可以使用 Process Monitor 之类的工具来查看启动进程的确切命令行。你可以使用 PowerShell 本身 (
Get-WmiObject -Class Win32_Process -Filter 'Name = ''WinSCP.exe''' -Property CommandLine) 来查询这个,前提是进程不会太快退出。
标签: powershell syntax winscp