从PowerShell通过FTP连接运行脚本

时间:2018-05-23 13:28:55

标签: powershell cmd ftp

我制作了一个执行基本任务的脚本,它连接到远程FTP站点,检索XML文件并在之后删除它们。

唯一的问题是,在过去我们丢失了文件,因为它们是在删除语句运行时添加的。

open ftp.site.com
username
password
cd Out
lcd "E:\FTP\Site"
mget *.XML
mdel *.XML

bye

为了防止这种情况发生,我们希望在FTP服务器上放置一个脚本(rename-files.ps1)。该脚本会将*.xml文件重命名为*.xml.copy

唯一的问题是我不知道如何通过我的FTP连接运行脚本。

1 个答案:

答案 0 :(得分:0)

一些(但很少)FTP服务器支持SITE EXEC命令。如果您的FTP服务器支持它的极少数情况,您可以使用:

quote SITE EXEC powershell rename-files.ps1

但是,在大多数情况下,如果FTP是访问服务器的唯一方式,则无法在FTP服务器上执行任何操作。您将不得不使用另一种方法来执行脚本,如SSH,PowerShell Remoting等。

但您的问题还有其他解决方案:

  • 使用FTP重命名文件;或
  • 仅删除已下载的文件。

两者都可行,但您需要比Windows ftp.exe更好的FTP客户端 请参阅示例A WinSCP script to download, rename, and move files

或者你可以这样做:

  • 运行ftp.exe一次以检索文件列表;
  • 在PowerShell中处理列表以生成ftp脚本,其中getdel命令用于特定文件(不带通配符);
  • 使用生成的脚本再次运行ftp.exe

实际上,您不需要在PowerShell中使用ftp.exe。 .NET程序集有自己的FTP实现:FtpWebRequest