Public/Pipeline/Environment/New-AdoEnvironment.ps1
|
function New-AdoEnvironment { <# .SYNOPSIS Create a new Azure DevOps Pipeline Environment. .DESCRIPTION This cmdlet creates a new Azure DevOps Pipeline Environment within a specified project. .PARAMETER ProjectId Mandatory. The ID or name of the project. .PARAMETER Name Optional. The new name for the environment. .PARAMETER Description Optional. The new description for the environment. .PARAMETER ApiVersion Optional. The API version to use for the request. Default is '7.2-preview.1'. .LINK https://learn.microsoft.com/en-us/rest/api/azure/devops/environments/environments/add .EXAMPLE Set-AdoEnvironment -ProjectId "MyProject" -EnvironmentId "42" -Name "NewEnvName" -Description "Updated description" Updates the environment with ID 42 in the project "MyProject" to have a new name and description. .NOTES This cmdlet requires an active connection to an Azure DevOps organization established via Connect-AdoOrganization. #> [CmdletBinding()] param ( [Parameter(Mandatory)] [string]$ProjectId, [Parameter(Mandatory)] [string]$Name, [Parameter(Mandatory)] [string]$Description, [Parameter(Mandatory = $false)] [Alias('api')] [ValidateSet('7.2-preview.1')] [string]$ApiVersion = '7.2-preview.1' ) begin { Write-Debug ('Command : {0}' -f $MyInvocation.MyCommand.Name) Write-Debug (' ProjectId : {0}' -f $ProjectId) Write-Debug (' Name : {0}' -f $Name) Write-Debug (' Description : {0}' -f $Description) Write-Debug (' ApiVersion : {0}' -f $ApiVersion) } process { try { $ErrorActionPreference = 'Stop' if (-not $global:AzDevOpsIsConnected) { throw 'Not connected to Azure DevOps. Please connect using Connect-AdoOrganization.' } $uriFormat = '{0}/{1}/_apis/pipelines/environments?api-version={2}' $azDevOpsUri = ($uriFormat -f [uri]::new($global:AzDevOpsOrganization), [uri]::EscapeUriString($ProjectId), $ApiVersion) $body = @{ name = $Name description = $Description } $params = @{ Method = 'POST' Uri = $azDevOpsUri ContentType = 'application/json' Headers = @{ 'Accept' = 'application/json' 'Authorization' = (ConvertFrom-SecureString -SecureString $AzDevOpsAuth -AsPlainText) } Body = ($body | ConvertTo-Json -Depth 3 -Compress) } $response = Invoke-RestMethod @params -Verbose:$VerbosePreference return $response } catch { throw $_ } } end { Write-Debug ('Exit : {0}' -f $MyInvocation.MyCommand.Name) } } |