【问题标题】:Is there a way to replace a YAML variable in a PowerShell replace script?有没有办法在 PowerShell 替换脚本中替换 YAML 变量?
【发布时间】:2021-09-29 00:17:53
【问题描述】:

我正在尝试从 Azure DevOps 中的变量组中获取一个变量,将其输入到将更改值的 PowerShell 脚本中。

我的变量组如下所示:

变量组名是=variableGroup,唯一的变量是=name:'Alex'

dashboardTable.md(试图替换字符串'Alex')

My name is Alex.

azure-pipelines.yml

variables:
- group: variableGroup

- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: '(Get-Content ./dashboardTable.md).replace("$(name)", 'Bob') | Set-Content ''./dashboardTable.md'''

这实际上是不可能的还是我的语法错误?

【问题讨论】:

    标签: azure powershell azure-devops yaml


    【解决方案1】:

    您需要始终将整个'...'字符串中的'字符嵌入转义为''

    variables:
    - group: variableGroup
    
    - task: PowerShell@2
      inputs:
        targetType: 'inline'
        script: '(Get-Content ./dashboardTable.md).replace(''$(name)'', ''Bob'') | Set-Content ./dashboardTable.md'
    

    您可以通过使用"..." 作为外引号来简化字符串,在这种情况下,嵌入的' 不需要转义:

    variables:
    - group: variableGroup
    
    - task: PowerShell@2
      inputs:
        targetType: 'inline'
        script: "(Get-Content ./dashboardTable.md).replace('$(name)', 'Bob') | Set-Content ./dashboardTable.md"
    

    但是,请注意 YAML 中的 "..." 字符串将 \ 解释为转义字符,因此 如果包含在 "..." 中的 PowerShell 命令包含 \ 的实例,它们必须加倍(\\

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-19
      • 1970-01-01
      • 1970-01-01
      • 2018-02-19
      • 2021-06-09
      • 2020-01-07
      • 2017-10-10
      相关资源
      最近更新 更多