【问题标题】:Copying a file from an FTP server using an absolute path in PowerShell/WebClient使用 PowerShell/WebClient 中的绝对路径从 FTP 服务器复制文件
【发布时间】:2018-03-24 11:28:52
【问题描述】:

我正在尝试使用 PowerShell 脚本将文件从 HP-UX 复制到我的 Windows 机器。

请在下面找到我的脚本。

$File = "d:\copiedfile.txt"
$ftp = "ftp://my_Unix_Domain_name/tmp/sourceFile.txt"
"ftp url: $ftp"
$webclient = New-Object System.Net.WebClient
$uri = New-Object System.Uri($ftp)
"Downloading $File..."
$webclient.DownloadFile($uri, $File)

我可以通过 FTP 连接,但是文件没有复制到我的目标目录。

我收到一个错误:

远程服务器返回错误:(550) 文件不可用(例如,找不到文件,无法访问)。

不确定,有什么问题。

我可以使用命令行ftp下载文件:

ftp> get /tmp/text.sh
200 PORT command successful.
150 Opening ASCII mode data connection for /tmp/test.sh (71 bytes).
226 Transfer complete.
ftp: 76 bytes received in 0.00Seconds 76000.00Kbytes/sec.
ftp>

【问题讨论】:

  • 您肯定会遇到一些错误。它是什么? + 您可以使用任何独立(甚至是 GUI)FTP 客户端下载相同的文件吗?向我们展示它的日志文件。
  • 收到此错误Exception calling "DownloadFile" with "2" argument(s): "The remote server return ed an error: (550) File unavailable (e.g., file not found, no acces)."。但是,当我尝试使用 ftp 手动获取此文件时,我能够从远程位置获取此文件而不会出现任何问题。
  • 再次向我们展示ftp的日志文件(或输出)! + 将信息(包括错误消息)添加到您的问题中。不要在 cmets 中发布重要信息。
  • 当您使用ftp 运行命令或脚本时,它会显示一些输出。我们希望看到这一点。
  • get tmp/test.sh(没有前导斜杠)有什么作用?

标签: .net powershell ftp webclient


【解决方案1】:

FTP 的 .NET 实现(WebClientFtpWebRequest)不认为主机名和文件路径之间的斜线是文件路径的一部分。

因此,如果您需要在 URL 中使用文件的绝对路径(如 /tmp/sourceFile.txt),则必须再添加一个斜杠:

$ftp = "ftp://my_Unix_Domain_name//tmp/sourceFile.txt"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-21
    相关资源
    最近更新 更多