Azure Dev Ops заменяет функцию, которая не работает \

#azure-devops

Вопрос:

У меня есть шаблон, подобный

 parameters:
  Server: ''

steps:
- powershell: echo "${{ parameters.Server }}"
- powershell: echo "${{ replace(parameters.Server, '\', '') }}"
- powershell: echo "${{ replace(parameters.Server, '\\', '') }}"
- powershell: echo "${{ replace(parameters.Server, '\\', '\') }}"
- powershell: echo "${{ replace(parameters.Server, '', '\') }}"
- powershell: echo "${{ replace(parameters.Server, 'parameters', 'xxx') }}"
 

и используйте его, как

 - template: 'path'
  parameters:
    Server: $(Server.Variable)
 

где переменная Server.Variable определяется на уровне этапа как host\path

но результат таков

 host\path
host\path
host\path
host\path
host\path
host\path
 

так что же я делаю не так?

Ответ №1:

Теперь мое решение состоит в том, чтобы создать новую переменную на уровне задания, которая определяется с помощью выражения времени выполнения, и ввести измененную переменную в шаблон

 jobs:
- job:
  variables:
    Changed.Server.Variable: $[ replace(variables['Server.Variable'], '\', '') ]
  steps:
    ...
    - template: 'path'
      parameters:
        Server: $(Changed.Server.Variable)
 

но мне больше хотелось бы найти решение, в котором мы могли бы изменить значение в шаблоне, но я не знаю, как это сделать.