Azure DevOps YAML配置PowerShell内联脚本报块映射解析错误
Azure DevOps YAML 内联PowerShell脚本解析错误修复
while parsing a block mapping did not find expected key报错由YAML结构不合法触发,原配置存在三类问题:
- 缩进不符合YAML规范:YAML是强缩进敏感语法,
inputs是任务参数的父节点,其下所有配置项(包括azureSubscription、ScriptType、Inline、preferredAzurePowerShellVersion)必须相对inputs缩进2-4个空格(全文件保持统一缩进规则即可)。原代码中这些参数和inputs处于同一缩进层级,直接触发键解析错误。 - 脚本本身存在语法疏漏:原内联脚本中
$var1 = "1!的双引号没有闭合,即使YAML解析通过,PowerShell执行阶段也会抛出语法错误。 - 多行块标量缩进错误:使用
|标记的多行文本块,内部所有内容必须相对Inline:行再缩进一级,不能和属性名齐平。
正确配置示例
- task: AzurePowerShell@5 displayName: 'test inline script in yaml' inputs: azureSubscription: 'azuresubscriptionid' ScriptType: InlineScript Inline: | # Setting Variables $var1 = "1!" Write-Output $var1 preferredAzurePowerShellVersion: 3.1.0
配置注意事项
- 优先使用
|标记多行内联脚本:这种块标量写法会原样保留脚本内容,脚本中包含:、#、{}、[]等YAML特殊字符时不需要额外转义,容错率远高于行内脚本写法。 - 缩进统一用空格,不要混用Tab键:Azure DevOps的YAML解析器无法正确识别Tab缩进,混用会直接触发解析错误。
- 如果不需要保留脚本末尾的空行,可以把
|替换为|-,解析时会自动剔除文本块末尾的多余换行,避免不必要的执行干扰。
内容的提问来源于stack exchange,提问作者itye1970
相关产品推荐
相关产品推荐

