Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell Azure DevOps预定义变量_Powershell_Variables_Syntax_Azure Devops - Fatal编程技术网

Powershell Azure DevOps预定义变量

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项目名称 您

我需要在发布管道中使用预定义的Azure DevOps变量。 我正在处理几个工件,我需要从每个工件中获取项目名称

因此,在内嵌PowerShell步骤中,我尝试使用

发布项目名

但是插值并没有按预期的那样工作。。 我尝试了以下几点,但没有成功:

$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所说的那样。