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
相关产品推荐
相关产品推荐

