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

Azure DevOps Pipeline中PowerShell变量出现无法移除的空白字符问题

问题解决:Azure DevOps流水线中PowerShell解析JSON出现随机换行报错

核心问题原因

你脚本里使用Format-Table和Out-String处理Invoke-WebRequest的响应内容,这两个命令是用来格式化输出为人类可读文本的工具,并非用于处理结构化数据。在Azure DevOps流水线环境中,它们会根据控制台宽度自动换行,导致JSON字符串被插入随机换行符,最终触发ConvertFrom-Json解析失败。

修复方案

直接从响应中提取原始JSON内容,跳过不必要的格式化步骤:

修正后的脚本

# 发起API请求
$response = Invoke-WebRequest -Uri $uri -Headers @{ 
    Authorization = "Basic " + [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$accessToken")) 
} -UseBasicParsing

# 直接转换原始JSON内容,避免格式化引入的换行
$items = $response.Content | ConvertFrom-Json

# 提取目标数据字段
$items = $items.value

额外注意事项

  • 脚本中需先读取流水线传递的环境变量:$accessToken = $env:SYSTEM_ACCESSTOKEN,确保令牌正确传入
  • 本地运行时控制台宽度足够,Format-Table未触发换行,因此无问题,但流水线环境控制台宽度有限,必然会引入随机换行
  • Invoke-WebRequest的Content属性直接返回API返回的原始JSON字符串,无需额外处理即可正常解析

内容的提问来源于stack exchange,提问作者Ryan Richard Klopka

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 17:05:25