In Azure-Pipelines habe ich eine Powershell-Aufgabe (Inline-Skript), in der ich eine Variable festlege

Write-Host "##vso[task.setvariable variable=deployActivity]false"

Unmittelbar nach dieser Zeile habe ich nur zu Überprüfungszwecken, ob die Variable gesetzt ist, die folgende Powershell:

if ($(deployActivity) -eq $true) {
    Write-Host "deployActivity=true (bool)"
}

Dies schlägt jedoch mit dem Fehler fehl:

deployActivity : The term 'deployActivity' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

Fragen -

  1. Was mache ich oben, um die Variable abzurufen - ist es richtig / möglich? Oder kann eine Variable nur in den Folgeaufgaben aufgefrischt werden?
  2. Warum scheitert es? Muss die Referenzierung von Variablen in Powershell eine andere Syntax haben?

Bitte lassen Sie es mich wissen.

Vielen Dank

2
sppc42 18 Sept. 2020 im 00:09

2 Antworten

Beste Antwort

Gemäß Dokumentation für diesen Befehl:

Legt eine Variable im Variablendienst von taskcontext fest. Die erste Aufgabe kann eine Variable festlegen, und die folgenden Aufgaben können die Variable verwenden. Die Variable ist den folgenden Aufgaben als Umgebungsvariable ausgesetzt.

Es ist nur für die folgenden Aufgaben verfügbar. Wenn Sie den Wert im selben Skript referenzieren müssen, sollten Sie bereits wissen, wie die interne Variable lauten soll.

Dieses Beispiel YML funktioniert für mich:

# Starter pipeline
# Start with a minimal pipeline that you can customize to build and deploy your code.
# Add steps that build, run tests, deploy, and more:
# https://aka.ms/yaml

trigger:
- master

pool:
  vmImage: 'windows-2019'

steps:

    
- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: 'Write-Host "##vso[task.setvariable variable=deployActivity]"Example string""'

- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: 'Write-Host "Deploy Activity: $(deployActivity)"'

Ausgabe der zweiten Aufgabe:

Starting: PowerShell
==============================================================================
Task         : PowerShell
Description  : Run a PowerShell script on Linux, macOS, or Windows
Version      : 2.170.1
Author       : Microsoft Corporation
Help         : https://docs.microsoft.com/azure/devops/pipelines/tasks/utility/powershell
==============================================================================
Generating script.
========================== Starting Command Output ===========================
"C:\windows\System32\WindowsPowerShell\v1.0\powershell.exe" -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -Command ". 'D:\a\_temp\3a04683f-6159-4bee-862b-2e899e977789.ps1'"
Deploy Activity:  Example string
Finishing: PowerShell
1
Matt 17 Sept. 2020 im 21:39

Versuchen Sie, die Variable mit "" - "$(deployActivity)" zu umbrechen:

if ("$(deployActivity)" -eq $true) {
    Write-Host "deployActivity=true (bool)"
}
0
Shayki Abramczyk 17 Sept. 2020 im 21:40