我正在创建一个PowerShell脚本,它将从用户输入组装HTTP路径.输出必须将用户输入中的任何空格转换为产品特定代码"%2F".
这是源和输出的示例:
站点URL可以是常量,但变量是更好的重用方法,因为程序中使用的是:/ http:%2F%2SPServer/Projects /"
$Company="Company"
$Product="Product"
$Project="The new project"
$SitePath="$SiteUrl/$Company/$Product/$Project"
Run Code Online (Sandbox Code Playgroud)
作为输出我需要:
'/http:%2F%2FSPServer%2FProjects%2FCompany%2FProductF2FThe%2Fnew%2Fproject'
Run Code Online (Sandbox Code Playgroud)
man*_*lds 56
要替换" "为%20和/使用%2F等,请执行以下操作:
[uri]::EscapeDataString($SitePath)
Run Code Online (Sandbox Code Playgroud)
Den*_*nis 36
@manojlds的解决方案转换所提供字符串中的所有奇数字符.如果您只想转义URL,请使用
[uri]::EscapeUriString($SitePath)
Run Code Online (Sandbox Code Playgroud)
这将留下例如斜杠(/)或等号(=).
例:
# 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")
Run Code Online (Sandbox Code Playgroud)
Eri*_* J. 14
您需要的输出转换(空格到%20,正斜杠到%2F)称为URL编码.它替换(转义)具有特殊含义的字符,当URL的一部分的十六进制等效值前面带有%符号时.
您可以在Powershell中使用.NET框架类.
[System.Web.HttpUtility]::UrlEncode($SitePath)
Run Code Online (Sandbox Code Playgroud)
对URL字符串进行编码.这些方法重载可用于编码整个URL,包括查询字符串值.
http://msdn.microsoft.com/en-us/library/system.web.httputility.urlencode.aspx
对于较新的操作系统,命令会更改.我在Server 2012 R2和Windows 10中遇到此问题.
如果出现[System.Web.HttpUtility]不存在的错误,应该使用[System.Net.WebUtility].
| 归档时间: |
|
| 查看次数: |
26864 次 |
| 最近记录: |