我想将一些数据上传到三个不同的FTP服务器。它适用于三台服务器中的两台。对于第三台服务器不起作用的原因是,密码中有一个old_value
登录,而我却无法转义它。就是行不通。抱歉,我无法为您显示密码,但请想象@
。现在,PowerShell认为密码已经在第一个ftp://username:p@ssword@ftp-server.com
符号处停止了,但是没有。因此,PowerShell使用的密码是错误的,而FTP服务器的地址也是错误的。
我尝试使用'@'或ASCII码@
或作为参数转义。
我真的不知道该怎么办...
[char]64
答案 0 :(得分:0)
最简单的方法是使用WebRequest.Credentials
而不是在URL中指定凭据:
$request = [Net.WebRequest]::Create("ftp://example.com/")
$request.Credentials = New-Object System.Net.NetworkCredential("username", "p@ssword")
或者,您可以使用Uri.EscapeDataString
:
$encodedPassword = [Uri]::EscapeDataString("p@ssword")
$request = [Net.WebRequest]::Create("ftp://username:$encodedPassword@example.com/")
它将为您提供:p%40ssword
–了解URL encoding。
与WebClient
类似:Using special characters (slash) in FTP credentials with WebClient