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 -
- Was mache ich oben, um die Variable abzurufen - ist es richtig / möglich? Oder kann eine Variable nur in den Folgeaufgaben aufgefrischt werden?
- Warum scheitert es? Muss die Referenzierung von Variablen in Powershell eine andere Syntax haben?
Bitte lassen Sie es mich wissen.
Vielen Dank
2 Antworten
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
Versuchen Sie, die Variable mit ""
- "$(deployActivity)"
zu umbrechen:
if ("$(deployActivity)" -eq $true) {
Write-Host "deployActivity=true (bool)"
}
Neue Fragen
azure-devops
Azure DevOps ist eine Suite von 5 Diensten, die Sie zusammen oder unabhängig voneinander verwenden. Azure Pipelines bietet beispielsweise Build Services (CI) sowie Release Management für die kontinuierliche Bereitstellung (CD) an alle Cloud- und lokalen Server. Azure Repos bietet unbegrenztes privates Git-Hosting, Azure Boards bietet agile Planung (Probleme, Kanban, Scrum und Dashboards). Beachten Sie, dass es für Azure DevOps Server (ehemals TFS) ein separates Tag gibt - die On-Prem-Version.