我有多个Azure PowerShell任务,我想在其中传递变量。目前我正在使用脚本参数传递变量,如屏幕截图所示:
脚本参数的问题在于,如果有变化,我必须在每个过程中编辑它们。是否可以只有一个可以链接到多个进程的变量? 我看过VSTS: Pass build variables into Powershell script task,但无论我如何编辑我的脚本,他们都拒绝工作。该主题也没有解释是否应将变量放入流程变量或队列构建变量中。 这是我试图自动化的脚本:
param
(
[Parameter(Mandatory)]
[String]$NewFileLocation1
)
Set-AzureRmVMCustomScriptExtension -Argument "-NewFileLocation1 $NewFileLocation" -ResourceGroupName Test-RG1`
-VMName VM1 `
-Location northeurope `
-FileUri https://raw.githubusercontent.com/x/assets/master/PowerShell/PS1/PS1/PS1.ps1 `
-Run 'PS1.ps1' `
-Name PS1
PS1.ps:
param
(
[Parameter(Mandatory)]
[String]$NewFileLocation
)
New-Item $NewFileLocation
答案 0 :(得分:1)
以下是我正在使用的内容:
Param (
[string]$location = $env:location,
...
[string]$tagEnvironment = $env:tagEnvironment
)
我正在使用VSTS库变量组,您可以将变量组链接到不同的发布管道。
答案 1 :(得分:1)
只需对如何使用上述变量组进行更多开发,就可以在Azure DevOps上的“库”子菜单的“管道菜单”中对其进行声明。在下图中,我声明了一个名为Tailspin Space Game - Release
然后我可以按如下方式在YAML代码中引用变量组:
variables:
- group: 'Timeline CV - Release'
然后我将它们作为参数传递给powershell,如下所示:
- task: PowerShell@2
displayName: 'Run PowerShell Task'
inputs:
filePath: 'path\to\powershell\script\script.ps1'
arguments: '$(groupVar1) $(groupVar2) $(groupVar3)'
PowerShell脚本可以使用构建变量,而无需以这种方式显式传递它们作为参数。但是,对于变量组中的任何变量,我都无法达到相同的效果。
我现在可以在powershell脚本中使用变量组,该脚本在powershell任务中通过以下方式被调用:
$GroupVar1OnPowerShellScript = $env:groupVar1
$GroupVar2OnPowerShellScript = $env:groupVar2
$GroupVar3OnPowerShellScript = $env:groupVar3