Powershell Azure DevOps预定义变量
我需要在发布管道中使用预定义的Azure DevOps变量。 我正在处理几个工件,我需要从每个工件中获取项目名称 因此,在内嵌PowerShell步骤中,我尝试使用 发布项目名 但是插值并没有按预期的那样工作。。 我尝试了以下几点,但没有成功:Powershell Azure DevOps预定义变量,powershell,variables,syntax,azure-devops,Powershell,Variables,Syntax,Azure Devops,我需要在发布管道中使用预定义的Azure DevOps变量。 我正在处理几个工件,我需要从每个工件中获取项目名称 因此,在内嵌PowerShell步骤中,我尝试使用 发布项目名 但是插值并没有按预期的那样工作。。 我尝试了以下几点,但没有成功: $ProjectName = $("RELEASE.ARTIFACTS.$($var.name).PROJECTNAME") 不幸的是,结果总是如此 “RELEASE.ARTIFACTS.varname.PROJECTNAME”而不是ADO项目名称 您
$ProjectName = $("RELEASE.ARTIFACTS.$($var.name).PROJECTNAME")
不幸的是,结果总是如此
“RELEASE.ARTIFACTS.varname.PROJECTNAME”而不是ADO项目名称
您可能需要在表达式中硬编码工件别名
#REPOS1 is the artifacts alias defined in release pipeline Artifacts-->Source alias
$ProjectName = $(Release.Artifacts.REPOS1.ProjectName)
在azure管道中,不能像这样将另一个$()
包装在$()
中$(a.$(b.c)
。Azure管道无法解析此类表达式$($())
以下表达式不起作用:
$alias = "Artifacts1"
$ProjectName = $(Release.Artifacts.$($alias).ProjectName)
$ProjectName = $(Release.Artifacts.$(arifactName).ProjectName)
IIRC,这些变量被引用
$(var.name)
。它不是一个子表达式。让我再详细一点:$($var.name)=“REPOS1”$(RELEASE.ARTIFACTS.REPOS1.PROJECTNAME)=PROJECT1
但是,当我试图通过执行$($RELEASE.ARTIFACTS.$($var.name.PROJECTNAME))从脚本中获取值“PROJECT1”时,我得到的结果等于“RELEASE.ARTIFACTS.varname.PROJECTNAME”,而不是“项目1“我的问题是我有几个工件,这就是为什么我必须在PowerShell中构建它。这些工件是如何添加到您的发布管道中的。它们是单独添加的还是在一个工件中添加的。添加工件时,可以在“源别名”字段中定义其别名,您可以使用该字段标识工件。是否可以共享屏幕截图?是否必须在powershell任务中根据某种条件确定别名?@gerem即使您有多个工件,如果您不动态添加它们,您也有固定数量的工件。我知道这不是最好的办法,但从我们这里看到的情况来看,这是我们能采取的最好办法。我也试图找到更好的方法,但这必须像Levi Ls MSFT所说的那样。