带有批处理脚本的PowerShell的SFTP

问题描述 投票:0回答:1

我有一个批处理脚本,该脚本每天晚上都通过schtasks在不同的远程Windows PC(Windows 7 32位SP1)上运行。这些PC需要通过FTP服务器与Linux服务器之间的FTP文件。当前使用FTP,批处理脚本可以正常工作。

现在Linux服务器已被更改为仅使用SFTP。我想编写一个简短的Powershell脚本来向服务器发送相同的文件,或者从服务器发送相同的文件-我已经安装了Posh-Ssh,可以在这些Windows系统(PS版本5.1)上的Powershell中使用。

当前执行FTP的批处理脚本部分如下所示:

REM make temp file for FTP
echo open pos%STORE%               >  C:\temp\temp.txt
echo username                      >> C:\temp\temp.txt
echo password                      >> C:\temp\temp.txt
echo ascii                         >> C:\temp\temp.txt    
echo cd /path/to/use               >> C:\temp\temp.txt
echo put %USERDOMAIN%.ftp          >> C:\temp\temp.txt
echo put posdaily.txt posdaily.ftp >> C:\temp\temp.txt
echo get prod.txt                  >> C:\temp\temp.txt
echo get posdaily.ftp              >> C:\temp\temp.txt
echo quit                          >> C:\temp\temp.txt

REM **** FTP to put/get files from POS Server ****
echo First Try Connect to POS ....
ftp -iv -s:\temp\temp.txt >> C:\log\Daily.log  2>&1

是否有一种方法可以使用正在创建的相同temp.txt来将用户名/密码/ put / get传递给使用Posh-Ssh的Powershell脚本?我需要对temp.txt文件进行哪些更改?

我可以调用运行Powershell脚本的单独的批处理脚本-我已经在以前的批处理脚本中做到了-但我不确定如何编写Powershell脚本-我将在Powershell脚本中使用哪些命令使用temp.txt中的数据?

powershell batch-file ftp sftp
1个回答
0
投票

是否有使用创建的相同temp.txt的方法来将用户名/密码/输入/获取传递给使用Posh-Ssh的Powershell脚本?

不,你不能。 Posh-Ssh是PowerShell的本机模块,它不像ftp那样使用脚本。

[@SomethingDark也已评论,因此无需切换到PowerShell for SFTP。甚至对于C#/ VB.NET也不行。 从C#/ VB.NET调用PowerShell脚本和批处理文件有什么区别?

对于批处理文件中的SFTP,请参阅:Secure FTP using Windows batch script

我的回答建议使用(我的)WinSCP SFTP客户端。WinSCP实际上可以使用与ftp类似(但不完全相同)的脚本。还有一个guide for converting ftp script to WinSCP script


尽管如果您打算为PowerShell / C#/ VB.NET使用相同/相似的代码,则最好使用SFTP .NET程序集。参见ftp

[如果您想要本机.NET程序集,我建议您使用SFTP Libraries for .NET(尽管最近几年它的开发已停止)。 您实际上是SSH.NET

WinSCP也use that already, don't you? –但这不是一个完全本机的.NET程序集。另一方面,WinSCP GUI可以has .NET assembly

© www.soinside.com 2019 - 2024. All rights reserved.