是否可以将 SFTP 站点上的文件夹内容通过管道传输到类似于窗口 sinnate ftp.exe 程序的本地文件,其语法为:
dir /MainDir/SubDir c:\test\ftp\CurrentContents.txt
但同样的语法不适用于 SFTP.exe。我需要能够在 powershell 脚本中一次处理一个文件名,并且我看不出有什么方法可以将文件名从 SFTP.exe 程序传递到 powershell 脚本并返回,而无需解析包含目录内容的文本文件。
如果有人有任何想法或建议,请告诉我。谢谢 rp
答案1
我用Rebex 的 .NET 组件用于我的 C# 程序和 PowerShell 脚本中的 FTPS 和 SFTP。我发现这比使用那些并非真正设计用于与脚本和其他应用程序顺利交互的外部程序要容易得多。
编辑:由于钱是个问题,你有没有尝试过使用其中一种公用设施与PuTTY捆绑?
答案2
Push-FTP 功能来自PowerShell 管道可以做到这一点,但并不像我希望的那样完美。我将在几天内进行必要的编辑以支持无缝流水线。它还在上传过程中提供进度条。
以下是一个例子:
Push-Ftp -Path c:\Example -Include *.aspx
答案3
我在用着putty psftp它与 powershell 配合得很好。
用法:
让我们创造$tempContent文件包含 ftp 命令ASCII编码
$tempContentFile = "$($workdir)\temp_get.txt"
$tempContent = "get -r /root/home/someuser/filestoDownload C:\temp\DownloadedFiles"
$out = out-file -filepath $tempContentFile -inputobject $tempContent -encoding ASCII;
首先,我们需要确保远程服务器 SSL 证书在本地被接受/存储
$out = echo Y|.\plink.exe -v -ssh $($attribute_IP) -l $($attribute_user) -pw $($attribute_password) -batch exit 2>&1
比 psftp 命令本身:
$out = .\psftp.exe $($attribute_IP) -l $($attribute_user) -pw $($attribute_password) -b $tempContentFile