【问题标题】:How to upload using FTP in Powershell, behind a proxy?如何在代理后面使用 FTP 在 Powershell 中上传?
【发布时间】:2012-04-23 07:38:01
【问题描述】:

我正在尝试在 Powershell 中使用 FTP 来上传文件。我使用FtpWebRequest 后跟GetRequestStream,但是这个方法返回错误:

“使用 HTTP 代理时不支持请求的 FTP 命令。”

我确实在代理背后并且必须这样做。

在代理后如何通过 Powershell 上传?

这将仅从 .ps1 Powershell 脚本运行。

我也试过了:

$webclient = New-Object System.Net.WebClient
$uri = New-Object System.Uri($server)

$webclient.UploadFile($uri, "C:\Test\1234567.txt")

$server 和该文件在哪里有效。但是该代码返回此错误:

"An exception occurred during a WebClient request."
At C:\Test\script.ps1:101 char:26
+     $webclient.UploadFile <<<< ($uri, "C:\Test\1234567.txt")
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : DotNetMethodException

我也在文件路径中尝试了双反斜杠,没有帮助。

我所在的代理只涉及 HTTP,而不涉及 FTP。

【问题讨论】:

    标签: powershell proxy ftp


    【解决方案1】:

    您确定您的代理支持 FTP,还是仅支持 HTTP?看到这个帖子:

    FTP File Upload with HTTP Proxy

    对于 WebClient,我过去曾使用过它,虽然它是用于 HTTP 的,但您可以尝试一下:

    $wc = New-Object System.Net.WebClient
    $wc.Headers.Add("User-Agent","Mozilla/4.0+")        
    $wc.Proxy = [System.Net.WebRequest]::DefaultWebProxy
    $wc.Proxy.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials
    $wc.UploadFile($uri, "C:\Test\1234567.txt")
    

    注意——“UploadFile 方法将本地文件发送到资源。此方法使用 STOR 命令上传 FTP 资源。对于 HTTP 资源,使用 POST 方法。”

    【讨论】:

    • 我已经检查过了,我所在的代理只涉及 HTTP 而不是 FTP。我正在尝试该代码但得到Exception calling "UploadFile" with "2" argument(s): "An exception occurred during a WebClient request."
    【解决方案2】:

    我有例外:

    使用“2”个参数调用“UploadFile”的异常:“WebClient 请求期间发生异常。”

    跟踪显示,当我使用 ftp-uri 并向 webclient 添加代理时,没有启动任何连接。 (既不是服务器也不是代理)

    我支持一个带有身份验证的 ftp 代理,它对我有用的唯一方法是:

    $LocalFile = "C:\Temp\test.csv"
    $FtpFile = "ftp://$ProxyUser:$ProxyPassword@$ProxyServer:21/ftp_test.csv"
    
    $uri = New-Object System.Uri($FtpFile)
    $webclient = New-Object System.Net.WebClient
    $webclient.Credentials = New-Object System.Net.NetworkCredential("$FtpUser@$FtpServer","$FtpPassword")
    $webclient.UploadFile($uri, $LocalFile)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-02
      • 1970-01-01
      • 2013-05-24
      • 2017-11-30
      • 1970-01-01
      • 2018-08-01
      相关资源
      最近更新 更多