文件名中格式错误的 URL powershell 空格

Malformed URL powershell spaces in filename

我正在使用以下脚本创建 URL。

$files1 =Get-ChildItem $ENV:WORKSPACE/Pro_result
$prefix="https://test-jenkins-a-master-black.aws.jhgf.com/job/qa/job/TestDemo_email_PDF/ws/Pro_result/"
foreach ($file in $files1) {
  write-Output ($prefix+$file.Name)
 }

但是,我得到的是这样的 url,我无法控制文件名 https://test-jenkins-a-master-black.aws.jhgf.com/job/qa/job/TestDemo_email_PDF/ws/Pro_result/W0A-209-193-210_Dealer portal产烟test_20220427-120342.pdf

它在 portal 之后中断。我该如何解决这个问题?

使用 [uri]::EscapeUriString method 转义 URI 路径中的空格和类似字符:

foreach ($file in $files1) {
  [uri]::EscapeUriString($prefix+$file.Name)
}

这将正确地 re-encode 空格作为 %20,导致有效的 URL 没有空格 a la:

https://test-jenkins-a-master-black.aws.jhgf.com/job/qa/job/TestDemo_email_PDF/ws/Pro_result/W0A-209-193-210_Dealer%20portal%20production%20smoke%20test_20220427-120342.pdf