I am trying to update the variable group using below method
<code>PUT https://dev.azure.com/{organization}/_apis/distributedtask/variablegroups/{groupId}?api-version=7.2-preview.2
</code>
<code>PUT https://dev.azure.com/{organization}/_apis/distributedtask/variablegroups/{groupId}?api-version=7.2-preview.2
</code>
PUT https://dev.azure.com/{organization}/_apis/distributedtask/variablegroups/{groupId}?api-version=7.2-preview.2
But its not working for me in powershell can some one help me to fix this
Script
<code># Parameters
$organization = "nprod"
$project = "APM"
$pat = "shgksdghiddsfgdertwetrweghdhfgkhsd" # Your PAT token
$variableGroupName = "Test-Variable-group"
$outputValue = "DaaS"
# Headers for API requests
$headers = @{
"Content-Type" = "application/json"
"Authorization" = "Basic " + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$($pat)"))
}
# Get the list of variable groups to find the ID
$uri = "https://dev.azure.com/$organization/$project/_apis/distributedtask/variablegroups?api-version=6.0-preview.2"
$response = Invoke-RestMethod -Uri $uri -Method Get -Headers $headers
$variableGroup = $response.value | Where-Object { $_.name -eq $variableGroupName }
if ($null -eq $variableGroup) {
Write-Error "Variable group '$variableGroupName' not found."
exit 1
}
$variableGroupId = $variableGroup.id
# Construct the body for the update
# First, get the existing variables to avoid overwriting the
$existingVariables = @{}
$variableGroup.variables | ForEach-Object {
if ($_.Key -ne $null -and $_.Value -ne $null) {
$existingVariables[$_.Key] = $_.Value
} else {
Write-Warning "Skipping variable with null key or value."
}
}
# Add or update the specific variable
$existingVariables["stoppedCjobs"] = @{
value = $outputValue
}
$body = @{
id = $variableGroupId
name = $variableGroupName
type = "Vsts"
variables = $existingVariables
} | ConvertTo-Json -Depth 10
# Update the variable group
#PUT https://dev.azure.com/{organization}/_apis/distributedtask/variablegroups/{groupId}?api-version=7.2-preview.2
$uri = "https://dev.azure.com/$organization/$project/_apis/distributedtask/variablegroups/$variableGroupId"+"?api-version=7.2-preview.2"
$response = Invoke-RestMethod -Uri $uri -Method Put -Headers $headers -Body $body
if ($response -ne $null) {
Write-Output "Variable group updated successfully."
} else {
Write-Error "Failed to update the variable group."
}
</code>
<code># Parameters
$organization = "nprod"
$project = "APM"
$pat = "shgksdghiddsfgdertwetrweghdhfgkhsd" # Your PAT token
$variableGroupName = "Test-Variable-group"
$outputValue = "DaaS"
# Headers for API requests
$headers = @{
"Content-Type" = "application/json"
"Authorization" = "Basic " + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$($pat)"))
}
# Get the list of variable groups to find the ID
$uri = "https://dev.azure.com/$organization/$project/_apis/distributedtask/variablegroups?api-version=6.0-preview.2"
$response = Invoke-RestMethod -Uri $uri -Method Get -Headers $headers
$variableGroup = $response.value | Where-Object { $_.name -eq $variableGroupName }
if ($null -eq $variableGroup) {
Write-Error "Variable group '$variableGroupName' not found."
exit 1
}
$variableGroupId = $variableGroup.id
# Construct the body for the update
# First, get the existing variables to avoid overwriting the
$existingVariables = @{}
$variableGroup.variables | ForEach-Object {
if ($_.Key -ne $null -and $_.Value -ne $null) {
$existingVariables[$_.Key] = $_.Value
} else {
Write-Warning "Skipping variable with null key or value."
}
}
# Add or update the specific variable
$existingVariables["stoppedCjobs"] = @{
value = $outputValue
}
$body = @{
id = $variableGroupId
name = $variableGroupName
type = "Vsts"
variables = $existingVariables
} | ConvertTo-Json -Depth 10
# Update the variable group
#PUT https://dev.azure.com/{organization}/_apis/distributedtask/variablegroups/{groupId}?api-version=7.2-preview.2
$uri = "https://dev.azure.com/$organization/$project/_apis/distributedtask/variablegroups/$variableGroupId"+"?api-version=7.2-preview.2"
$response = Invoke-RestMethod -Uri $uri -Method Put -Headers $headers -Body $body
if ($response -ne $null) {
Write-Output "Variable group updated successfully."
} else {
Write-Error "Failed to update the variable group."
}
</code>
# Parameters
$organization = "nprod"
$project = "APM"
$pat = "shgksdghiddsfgdertwetrweghdhfgkhsd" # Your PAT token
$variableGroupName = "Test-Variable-group"
$outputValue = "DaaS"
# Headers for API requests
$headers = @{
"Content-Type" = "application/json"
"Authorization" = "Basic " + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$($pat)"))
}
# Get the list of variable groups to find the ID
$uri = "https://dev.azure.com/$organization/$project/_apis/distributedtask/variablegroups?api-version=6.0-preview.2"
$response = Invoke-RestMethod -Uri $uri -Method Get -Headers $headers
$variableGroup = $response.value | Where-Object { $_.name -eq $variableGroupName }
if ($null -eq $variableGroup) {
Write-Error "Variable group '$variableGroupName' not found."
exit 1
}
$variableGroupId = $variableGroup.id
# Construct the body for the update
# First, get the existing variables to avoid overwriting the
$existingVariables = @{}
$variableGroup.variables | ForEach-Object {
if ($_.Key -ne $null -and $_.Value -ne $null) {
$existingVariables[$_.Key] = $_.Value
} else {
Write-Warning "Skipping variable with null key or value."
}
}
# Add or update the specific variable
$existingVariables["stoppedCjobs"] = @{
value = $outputValue
}
$body = @{
id = $variableGroupId
name = $variableGroupName
type = "Vsts"
variables = $existingVariables
} | ConvertTo-Json -Depth 10
# Update the variable group
#PUT https://dev.azure.com/{organization}/_apis/distributedtask/variablegroups/{groupId}?api-version=7.2-preview.2
$uri = "https://dev.azure.com/$organization/$project/_apis/distributedtask/variablegroups/$variableGroupId"+"?api-version=7.2-preview.2"
$response = Invoke-RestMethod -Uri $uri -Method Put -Headers $headers -Body $body
if ($response -ne $null) {
Write-Output "Variable group updated successfully."
} else {
Write-Error "Failed to update the variable group."
}
And getting error like
<code>
WARNING: Skipping variable with null key or value.
Invoke-RestMethod : {"$id":"1","innerException":null,"message":"Project information name is not valid for variable group.","typeName":"System.ArgumentException,
mscorlib","typeKey":"ArgumentException","errorCode":0,"eventId":0}
At line:44 char:13
+ $response = Invoke-RestMethod -Uri $uri -Method Put -Headers $headers ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebException
+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand
</code>
<code>
WARNING: Skipping variable with null key or value.
Invoke-RestMethod : {"$id":"1","innerException":null,"message":"Project information name is not valid for variable group.","typeName":"System.ArgumentException,
mscorlib","typeKey":"ArgumentException","errorCode":0,"eventId":0}
At line:44 char:13
+ $response = Invoke-RestMethod -Uri $uri -Method Put -Headers $headers ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebException
+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand
</code>
WARNING: Skipping variable with null key or value.
Invoke-RestMethod : {"$id":"1","innerException":null,"message":"Project information name is not valid for variable group.","typeName":"System.ArgumentException,
mscorlib","typeKey":"ArgumentException","errorCode":0,"eventId":0}
At line:44 char:13
+ $response = Invoke-RestMethod -Uri $uri -Method Put -Headers $headers ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebException
+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand
want to figure this out issue