我有一个 Azure DevOps yaml 管道,看起来(有点像)像这样:
variables:
MyVar: Test
Steps:
- task: AzurePowerShell@5
displayName: 'Test variables from yml file'
inputs:
azureSubscription: MyServiceConnection
ScriptType: InLineScript
InLine: |
Write-Host "I really want to see the values from the variables in the yml file here"
Write-Host "parameters from the yml file would be great too"
Write-Host "But what would I write to do that?"
Write-Host "$(MyVar) <- Nothing here"
Write-Host "$(variables.MyVar) <- Nothing here"
Write-Host "$DoesThisWork <- Nothing here"
Write-Host "$OrThis <- Nothing here"
env:
DoesThisWork: $(MyVar)
OrThis: $(variables.MyVar)
如何在 InLine 脚本中使用 MyVar?
最佳答案
我将其精简为最简单的,它工作得很好:
pool:
vmImage: 'windows-latest'
variables:
myVar: test value
steps:
- powershell: Write-Host "$(myVar)"
生成:
我修改了您的示例以删除未编译的 env
block ,并删除了不正确的变量引用:
pool:
vmImage: 'windows-latest'
variables:
myVar: test value
steps:
- task: AzurePowerShell@5
inputs:
azureSubscription: 'My Service Connection Name'
ScriptType: 'InlineScript'
Inline: |
Write-Host "I really want to see the values from the variables in the yml file here"
Write-Host "parameters from the yml file would be great too"
Write-Host "But what would I write to do that?"
Write-Host "$(MyVar) <- Nothing here"
azurePowerShellVersion: 'LatestVersion'
得到:
它没有通过第一个,因为语法 $(variables.MyVar)
无效。语法的工作原理如下:
- 编译时(仅在声明变量的文件中可用,不能用于模板等嵌套文件):
${{variables.MyVar }}
- 运行时(任务执行之前):
$(MyVar)
- 如果为空,则扩展为“$(MyVar)” - 运行时(针对特定条件或默认值导致问题的情况而设计):
$[variables.MyVar]
- 如果为空,则扩展为空字符串
我想知道缺少 Azure Powershell 版本是否是您的问题的一部分?
关于azure - 在 AzurePowerShellV5 内联脚本中引用 yaml 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66288762/