将管道变量作为参数传递到Powershell构建步骤在Azure DevOps中不起作用



我希望能够将管道变量传递到Azure DevOps Server中的Powershell构建步骤中。我试图通过将变量作为参数传递来实现这一点。

这是我的管道YAML文件:

- task: PowerShell@2
displayName: 'Detect Subfolder Changes'
name: setvarStep
inputs:
targetType: 'filePath'
filePath: $(System.DefaultWorkingDirectory)detectchanges.ps1
failOnStderr: true

- task: PowerShell@2
displayName: 'Get Version Number'
name: getVersion
inputs:
arguments: >
- packagepath $(setvarStep.changedPackage)
targetType: 'filePath'
filePath: $(System.DefaultWorkingDirectory)getversion.ps1
failOnStderr: true

下面是Powershell脚本(getversion.ps1),我在其中传递"packagepath"参数:

param($packagepath)
Write-Host "packagepath is: $packagepath"
$xml = [Xml] (Get-Content $packagepath)
$version = [Version] $xml.Project.PropertyGroup.Version
"##vso[task.setvariable variable=packageVersion;isOutput=true]$version"

Writ Host命令打印出"packagepath is:-"。我打开了调试,参数值在日志中显示为:##[debug]INPUT_ARGUMENTS: '- packagepath dotnet/TestPackage/*.csproj'

我没有将变量作为参数传递,而是尝试将变量插入脚本中,如下所示:$packagepath = $($env:SETVARSTEP.CHANGEDPACKAGE),但没有成功。

在构建步骤中,我确实尝试过在参数参数中添加双引号,如下所示:- packagepath "$(setvarStep.changedPackage)"。它也不起作用。

参数值正在获取Powershell脚本getversion.ps1,但由于某种原因,该值没有显示。

@g.sulman谢谢你的建议。我把-packagepath改成了-packagepath,它成功了。我想这是一个很小的语法。

最新更新