Repcak is correct.
When you use the logging command to set variables in Powershell, you can only change the value of the variable in Pipeline Run instead of the Release Definition.
To Update the Release definition in Powershell Task, you could try the following Pipeline Settings:
Add two Powershell tasks.
1.The first PowerShell task run the following script:
Write-Host "##vso[task.setvariable variable=ecomm;]No"
This script is used to update the variable values in pipeline run.
2.The second Powershell task run the following script:
$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"}
Note: You also need to set some release options:
Select the option: Allow scripts to access the OAuth token
in Releases -> Agent Job
Grant the Edit release pipeline
permission to the Role :Project Collection Build Service (OrgName)
Result:

For more detailed information, you could refer to this ticket.