我正在创建一个PowerShell脚本,该脚本将汇集来自用户输入的HTTP路径。输出必须将用户输入中的任何空格转换为产品特定代码,"%2F"。
这是源和输出的示例:
站点URL可以是常量,但变量是更好的重用方法,因为程序中使用的是:/ http:%2F%2SPServer / Projects /"
$Company="Company"
$Product="Product"
$Project="The new project"
$SitePath="$SiteUrl/$Company/$Product/$Project"
作为输出我需要:
'/http:%2F%2FSPServer%2FProjects%2FCompany%2FProductF2FThe%2Fnew%2Fproject'
答案 0 :(得分:53)
要将" "
替换为%20
,将/
替换为%2F
,依此类推,请执行以下操作:
[uri]::EscapeDataString($SitePath)
答案 1 :(得分:32)
@manojlds的解决方案在提供的字符串中转换所有个奇数字符。 如果您只想转发URL,请使用
[uri]::EscapeUriString($SitePath)
这会留下例如斜线(/
)或等号(=
)。
示例:强>
# Returns http%3A%2F%2Ftest.com%3Ftest%3Dmy%20value
[uri]::EscapeDataString("http://test.com?test=my value")
# Returns http://test.com?test=my%20value
[uri]::EscapeUriString("http://test.com?test=my value")
答案 2 :(得分:13)
您需要的输出转换(空格到%20,正斜杠到%2F)称为URL编码。它替换(转义)具有特殊含义的字符,当URL的一部分的十六进制等效符号前面带有%符号时。
您可以在Powershell中使用.NET框架类。
[System.Web.HttpUtility]::UrlEncode($SitePath)
对URL字符串进行编码。这些方法重载可用于编码整个URL,包括查询字符串值。
http://msdn.microsoft.com/en-us/library/system.web.httputility.urlencode.aspx
答案 3 :(得分:8)
对于较新的操作系统,命令已更改。我在Server 2012 R2和Windows 10中遇到此问题。
[System.Net.WebUtility]是你应该使用[System.Web.HttpUtility]不存在的错误。