yaml PowerShell任务看起来像这样:
- task: PowerShell@2
displayName: 'test'
inputs:
targetType: filePath
filePath: '$(Agent.BuildDirectory)\$(artifactName)\testpath\testscript.ps1'
arguments: '-parameterFilePath $(Agent.BuildDirectory)\$(artifactName)\mainfolder\params.json -appSecurePassword (convertTo-SecureString $(appPassword) -AsPlainText -Force) -vmSecurePassword (convertTo-SecureString $(vmPassword) -AsPlainText -Force)'
但是,出现此错误:
2020-06-09T12:54:59.6954669Z在C:\ agent_work_temp \ 66085384-0a17-4183-9832-42c481b13a84.ps1:3字符:352
2020-06-09T12:54:59.6974788Z + ... urePassword(convertTo-SecureString *** -AsPlainText -Force)
2020-06-09T12:54:59.7070327Z +〜
2020-06-09T12:54:59.7124752Z表达式中缺少结束')'。
2020-06-09T12:54:59.7142356Z + CategoryInfo:ParserError:(:) [],ParseException
2020-06-09T12:54:59.7161695Z + FullyQualifiedErrorId:MissingEndParenthesisInExpression
2020-06-09T12:54:59.7173148Z
2020-06-09T12:54:59.8102255Z ## [error] PowerShell退出,代码为“ 1”。
有人可以让我知道我在想什么吗?我确信PowerShell脚本没有问题,因为我可以在代理上手动运行它。
答案 0 :(得分:0)
使用Azure YAML管道进行调试的一种方法是在运行时在管道上选择“启用系统诊断”:
运行后,您可以下载日志:
下载后,请查看azure-pipelines-expanded.yml。这将是您的管道正在运行的完整Yaml,包含所有模板。这应该使您完整了解正在执行的操作。
答案 1 :(得分:0)
以上错误消息... urePassword (convertTo-SecureString *** -AsPlainText -Force)
表示问题来自powershell任务的arguments
。
错误Missing closing ')' in expression
表示您的密码中包含“(”字符。
我在管道上进行了测试,如果密码是“ pass(word” )(不带双引号)。我收到了相同的Missing closing ')'
错误消息。
在arguments
中引用密码时,可以尝试双引号。见下文:
-appSecurePassword (convertTo-SecureString "$(appPassword)" -AsPlainText -Force) -vmSecurePassword (convertTo-SecureString "$(vmPassword)" -AsPlainText -Force)
您还可以尝试使用反引号转义密码中的特殊字符。例如,在管道变量中定义的密码中转义特殊字符(例如“ pass`(单词” )
有关更多信息,请参见Passwords Containing Special Characters In PowerShell。