我试图在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。
答案 0 :(得分:4)
您确定您的代理支持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方法。”
答案 1 :(得分:0)
我有一个例外:
使用“ 2”作为参数调用“ UploadFile”的异常:“在WebClient请求期间发生异常。”
跟踪显示,当我使用ftp-uri并将代理添加到webclient时,没有启动连接。 (既不发送给服务器也不发送给代理)
我支持身份验证的ftp-proxy,对我有用的唯一方法是:
$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)