【问题标题】:Power shell for downloading folders through ftp用于通过 ftp 下载文件夹的 Powershell
【发布时间】:2011-03-19 02:28:21
【问题描述】:

我有一个 Web 应用程序,可以在服务器上生成和上传文档(word、pdf 等)。现在我正在编写一个 power shell 脚本,它将首先将这些文件传输到一个 ftp 文件夹。这部分完成了。第二个脚本每天都会在我的备份服务器上运行,并将所有文件夹/文件从该 ftp 服务器下载到我的备份服务器。问题是我无法下载文件夹。它很容易下载文件,但我似乎找不到任何基本上可以让我下载整个文件夹(包含内容)或至少让我遍历文件夹内容的代码。

如果我知道文件夹,那么我不会有问题,我可以为每个文件夹硬编码一个函数,但文档会上传到动态文件夹(文件夹名称由应用程序生成)。我只知道主文件夹。我需要遍历它。并且压缩不是一个好主意,因为文件夹大小约为 1 Gig。不想每天通过网络传输 1 个演出。

在这方面的任何帮助将不胜感激。

谢谢。

-----------更新--------

gci 仅适用于本地系统上的文件(我在这里可能错了)。我指的是遍历 ftp 文件夹和文件。

这是我在本地通过 gci 的方式: $GciFiles = gci C:\ParentFolder\SubFolder\ -recurse |其中 {$_.attributes -ne "目录"}

foreach ($GciFiles 中的$file) {}

现在这一切都很花哨,因为 foreach 也可以给我文件夹名和文件名。但是我想对 FTP 代码做同样的事情:

$ftphost = "ftplocation\父文件夹\" 凭据在这里 制作一个 ftp_web_request 对象

$ftprequest.Method = [System.Net.WebRequestMethods+Ftp]::ListDirectory $ftpresponse = $ftprequest.GetResponse() $responseStream = $ftpresponse.GetResponseStream() $readStream = new-object System.IO.StreamReader $responseStream

while (($line = $readStream.ReadLine() ) -ne $null) { $line 这里给了我们文件的名字 #函数下载文件 }

现在这一切都很好,只要我知道我想从中下载文件的文件夹。但是,正如我之前所说,我只知道具有未知数量文件夹的父文件夹(它们的名称是由应用程序创建的 GUID)和在每个 GUID 文件夹中都有一些文件。

现在我到底应该如何在该代码上使用 GCI ???

我所做的是在相同的代码上,首先获取每个文件夹的名称,然后有另一个函数(除了现在我知道文件夹名称之外相同)并在该函数上循环下载文件。但是它不起作用。脚本只是继续执行。我是深水!不知道该怎么办!

【问题讨论】:

  • 我不确定我是否理解。 Get-ChildItem 应该遍历文件夹和文件。你能发布一个你如何访问你的 ftp 站点的代码 sn-p 吗?

标签: powershell ftp download directory


【解决方案1】:

tenpn 有它。只需使用 Get-ChildItem 的 -Recurse 选项

是的,走这条路似乎并不能真正为您提供您正在寻找的功能。我怀疑有一种破解方法可以绕过它,方法是将服务器端的目录名称拉成一个字符串,然后在客户端创建一个相同的目录。

老实说,我认为使用net-cmdlets 之类的东西可能会更好

我相信有一个爱好者许可证,或者如果你是通过工作来做这个的,那么完整版的价格不到 100 美元。

【讨论】:

    猜你喜欢
    • 2011-08-04
    • 2016-09-02
    • 1970-01-01
    • 1970-01-01
    • 2011-08-02
    • 2012-08-18
    • 2020-05-25
    相关资源
    最近更新 更多