在我的PowerShell FTP脚本中转义@字符

时间:2019-06-11 07:49:07

标签: .net powershell url ftp ftpwebrequest

我想将一些数据上传到三个不同的FTP服务器。它适用于三台服务器中的两台。对于第三台服务器不起作用的原因是,密码中有一个old_value登录,而我却无法转义它。就是行不通。抱歉,我无法为您显示密码,但请想象@。现在,PowerShell认为密码已经在第一个ftp://username:p@ssword@ftp-server.com符号处停止了,但是没有。因此,PowerShell使用的密码是错误的,而FTP服务器的地址也是错误的。

我尝试使用'@'或ASCII码@或作为参数转义。 我真的不知道该怎么办...

[char]64

1 个答案:

答案 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