Aktualisieren Sie den Wert der Azure-Freigabevariablen in PowerShell
Ich habe die Release-Variable $ (ecomm) = Yes in der Azure Release-Pipeline

Über Powershell möchte ich den Wert von $ (ecomm) = No aktualisieren
Write-Host "Before update: "$(ecomm) Write-Host "##vso[task.setvariable variable=ecomm;]No" Write-Host "After update: "$(ecomm)
Der Wert wird jedoch nicht aktualisiert. Können Sie mir bitte dabei helfen? Danke im Voraus.
Antworten
Repcak ist richtig.
Wenn Sie den Befehl logging verwenden, um Variablen in Powershell festzulegen, können Sie nur den Wert der Variablen in Pipeline Run anstelle der Release-Definition ändern.
Um die Release-Definition in Powershell Task zu aktualisieren, können Sie die folgenden Pipeline-Einstellungen ausprobieren:
Fügen Sie zwei Powershell-Aufgaben hinzu.
1.Die erste PowerShell-Aufgabe führt das folgende Skript aus:
Write-Host "##vso[task.setvariable variable=ecomm;]No"
Dieses Skript wird verwendet, um die Variablenwerte im Pipeline-Lauf zu aktualisieren.
2.Die zweite Powershell-Task führt das folgende Skript aus:
$url = "$($env:SYSTEM_TEAMFOUNDATIONSERVERURI)$env:SYSTEM_TEAMPROJECTID/_apis/Release/definitions/$($env:RELEASE_DEFINITIONID)?api-version=5.0-preview.3"
Write-Host "URL: $url" $pipeline = Invoke-RestMethod -Uri $url -Headers @{ Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"
}
Write-Host "Pipeline = $($pipeline | ConvertTo-Json -Depth 100)"
$pipeline.variables.ecomm.value = "$(ecomm)"
$json = @($pipeline) | ConvertTo-Json -Depth 99
$updatedef = Invoke-RestMethod -Uri $url -Method Put -Body $json -ContentType "application/json" -Headers @{Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"}
Hinweis: Sie müssen auch einige Release-Optionen festlegen:
Wählen Sie die Option:
Allow scripts to access the OAuth token
inReleases -> Agent Job
Erteilen Sie
Edit release pipeline
der Rolle die Erlaubnis:Project Collection Build Service (OrgName)
Ergebnis:

Weitere Informationen finden Sie in diesem Ticket .
Auf diese Weise wird nur die Variable für den angegebenen Pipeline-Lauf aktualisiert. Azure Pipelines importieren diese Variablen von der angezeigten Schnittstelle und können sie dann überschreiben (die Instanz der importierten Variablen). Um die Variable in der klassischen Schnittstelle zu ändern, müssten Sie AzureDevops einen API-Aufruf senden.