【问题标题】:Run a script via FTP connection from PowerShell从 PowerShell 通过 FTP 连接运行脚本
【发布时间】:2018-05-23 13:28:54
【问题描述】:

我编写了一个脚本来完成一项非常基本的任务,它连接到远程 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 连接运行脚本。

【问题讨论】:

  • 您无法使用 FTP 运行脚本。请参阅How do I execute a script on another server using FTP in UNIX? - 除非您有除 FTP 之外的其他方式来访问服务器。 - 为什么不只删除/重命名下载的文件?那将是正确的解决方案。
  • 我需要在下载它们之前重命名它们,在 ftp 站点上发布 xml 是一个持续的过程。如果我删除 XML 的添加脚本的结尾,则有可能会删除新文件
  • 为什么?我了解到您想防止删除在下载过程中添加的文件。同样,仅删除已下载的文件。而且你不需要任何重命名,只需要执行任何脚本。

标签: powershell cmd ftp


【解决方案1】:

一些但很少的 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 中处理列表以生成带有 getdel 特定文件命令的 ftp 脚​​本(不带通配符);
  • 使用生成的脚本再次运行ftp.exe

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

【讨论】:

    猜你喜欢
    • 2017-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-14
    相关资源
    最近更新 更多