Невозможно использовать выходные переменные из сценария PowerShell в задаче переопределения параметров развертывания группы ресурсов в Azure DevOPS - PullRequest
0 голосов
/ 13 марта 2020

У меня есть сценарий PowerShell, в котором у меня есть несколько выходных переменных, сгенерированных со следующим синтаксисом:

Write-Host ("##vso[task.setvariable variable=appObjectId;issecret=false]"+$appObjectId)

В задаче PowerShell в Azure DevOPS я установил выходные переменные следующим образом: enter image description here

Затем я использую свои выходные переменные в развертывании группы ресурсов Azure следующим образом: enter image description here

К сожалению, когда я Посмотрите подробности развертывания в Azure, я вижу, что параметры моего ARM заполнены не значением выходных параметров, а его именем: enter image description here

Важная информация: задача развертывания ARM выполняется внутри группы задач. Мой сценарий PowerShell находится в процессе разработки, непосредственно перед вызовом целевой группы. Я пытался поместить скрипт в группу задач, но у меня точно такая же проблема.

Ответы [ 3 ]

0 голосов
/ 16 марта 2020

Обновление

Также добавьте isoutput=true, по умолчанию false .


Причина: для переменной не установлено значение appObjectId . Там нет AADApplication.appClientid. Затем Azure DevOps обрабатывают это как строку. Вот почему параметры моего ARM заполняются не значением выходных параметров, а его именем.

Нет необходимости использовать () для включения следующей команды набора переменных.

SetVariable: Инициализируйте или измените значение переменной

##vso[task.setvariable]value

Вы должны использовать следующий синтаксис:

Write-Host "##vso[task.setvariable variable=appClientID;issecret=false;isoutput=true]value"

Более подробную информацию см. В нашем официальном c здесь .

0 голосов
/ 26 марта 2020

Я нашел причину root: мне нужно заключить параметр "$ (myParam)" в задачи, где мне нужно его использовать. В противном случае он не вычисляется.

0 голосов
/ 14 марта 2020

Я думаю, что вы, возможно, неправильно указали формат для определения выходной переменной из вашего скрипта Powershell, это должно работать -

Write-Host "## vso [task.setvariable variable = appObjectId; isOutput = true ] $ appObjectId "

...