Zaktualizuj wartość zmiennej wydania platformy Azure w programie PowerShell
Mam Release Variable $ (ecomm) = Yes, w Azure Release Pipeline

Poprzez PowerShell chcę zaktualizować wartość $ (ecomm) = Nie
Write-Host "Before update: "$(ecomm) Write-Host "##vso[task.setvariable variable=ecomm;]No" Write-Host "After update: "$(ecomm)
Ale wartość się nie aktualizuje. Czy możesz mi w tym pomóc? Z góry dziękuję.
Odpowiedzi
Repcak ma rację.
Gdy używasz polecenia rejestrowania do ustawiania zmiennych w programie PowerShell, możesz zmienić wartość zmiennej tylko w przebiegu potoku zamiast definicji wydania.
Aby zaktualizować definicję wydania w zadaniu PowerShell, możesz wypróbować następujące ustawienia potoku:
Dodaj dwa zadania programu PowerShell.
1. pierwsze zadanie programu PowerShell uruchom następujący skrypt:
Write-Host "##vso[task.setvariable variable=ecomm;]No"
Ten skrypt służy do aktualizowania wartości zmiennych podczas uruchamiania potoku.
2. Drugie zadanie programu PowerShell uruchom następujący skrypt:
$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"}
Uwaga: musisz również ustawić niektóre opcje wersji :
Wybierz opcję:
Allow scripts to access the OAuth token
wReleases -> Agent Job
Przyznaj
Edit release pipeline
uprawnienia roli:Project Collection Build Service (OrgName)
Wynik:

Aby uzyskać bardziej szczegółowe informacje, możesz zapoznać się z tym zgłoszeniem .
Sposób, w jaki to robisz, aktualizuje tylko zmienną dla danego przebiegu potoku. Usługa Azure Pipelines importuje te zmienne z wyświetlanego interfejsu, a następnie można je zastąpić (wystąpienie zaimportowanej zmiennej). Aby zmienić zmienną w klasycznym interfejsie, należy wykonać wywołanie interfejsu API do AzureDevops.