You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PowerShell [uri]类型加速器时AbsoluteUri出现编码异常问题

PowerShell中[uri]类型加速器转换URL时的编码问题

问题场景

  • 本地文件$URLsFile包含以下URL内容:
http://WIND451325/Dev/Application.aspx__%__dev.com
http://WIND451326/Dev/Application.aspx__%__dev.com
  • 执行PowerShell命令将文件内容转换为URI数组:
[uri[]]$ArrayURLs = Get-Content -Path $URLsFile
  • 遍历输出数组中每个元素的AbsoluteUri属性时,发现原URL里的__%__被自动转换为__%25__:
foreach ($item in $ArrayURLs)
{
    $item.AbsoluteUri
}

# 实际输出
http://WIND451325/Dev/Application.aspx__%25__dev.com
http://WIND451326/Dev/Application.aspx__%25__dev.com

原因解析

这是.NET框架中System.Uri类的默认行为:

  • %是URL的保留字符,专门用于标识编码后的特殊字符(比如%20对应空格)。当System.Uri解析到未编码的%时,会自动将其编码为%25(%的标准URL编码值)。
  • PowerShell的[uri]类型加速器本质就是调用.NET的System.Uri类完成类型转换,因此会触发这个自动编码逻辑。

处理方案

如果需要保留原URL中的%不被编码,可参考以下两种方式:

  1. 先读取原始字符串,避免直接转为[uri]类型,后续按需手动处理:
$rawURLs = Get-Content -Path $URLsFile
  1. 对已编码的Uri结果进行手动解码:
[uri[]]$ArrayURLs = Get-Content -Path $URLsFile
foreach ($item in $ArrayURLs) {
    [Uri]::UnescapeDataString($item.AbsoluteUri)
}

内容的提问来源于stack exchange,提问作者edwio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 10:50:06