Public/ServiceEndpoint/EndPoints/Get-AdoServiceEndpoint.ps1
|
function Get-AdoServiceEndpoint { <# .SYNOPSIS Retrieves Azure DevOps service endpoint details by name. .DESCRIPTION This cmdlet retrieves service endpoint details for one or more Azure DevOps service endpoints by their names within a specified project. .PARAMETER CollectionUri Optional. The collection URI of the Azure DevOps collection/organization, e.g., https://dev.azure.com/my-org. .PARAMETER ProjectName Optional. The ID or name of the project. .PARAMETER Ids Optional. The unique identifiers of the service endpoints to retrieve. .PARAMETER Names Optional. The names of the service endpoints to retrieve. .PARAMETER Owner Optional. Filter by service endpoint owner. Valid values are 'library' and 'agentcloud'. .PARAMETER Type Optional. Filter by service endpoint type, e.g., 'generic', 'azurerm', etc. .PARAMETER Version Optional. The API version to use for the request. Default is '7.1'. .LINK - https://learn.microsoft.com/en-us/rest/api/azure/devops/serviceendpoint/endpoints/get - https://learn.microsoft.com/en-us/rest/api/azure/devops/serviceendpoint/endpoints/get-service-endpoints - https://learn.microsoft.com/en-us/rest/api/azure/devops/serviceendpoint/endpoints/get-service-endpoints-by-names .EXAMPLE $params = @{ CollectionUri = 'https://dev.azure.com/my-org' ProjectName = 'my-project-1' } Get-AdoServiceEndpoint @params -Name 'my-endpoint-1' Retrieves the service endpoint with the name 'my-endpoint-1' in the project 'my-project-1'. .EXAMPLE $params = @{ CollectionUri = 'https://dev.azure.com/my-org' ProjectName = 'my-project-1' } Get-AdoServiceEndpoint @params -Name 'my-endpoint-1', 'id-my-other-endpoint' Retrieves multiple service endpoints by their names in the project 'my-project-1'. .EXAMPLE 'endpoint1', 'endpoint2' | Get-AdoServiceEndpoint -ProjectName 'my-project-1' Retrieves multiple service endpoints by piping their names to the cmdlet. #> [CmdletBinding(SupportsShouldProcess, DefaultParameterSetName = 'ByNames')] [OutputType([PSCustomObject])] param ( [Parameter(ValueFromPipelineByPropertyName)] [ValidateScript({ Confirm-CollectionUri -Uri $_ })] [string]$CollectionUri = $env:DefaultAdoCollectionUri, [Parameter( ValueFromPipelineByPropertyName)] [Alias('ProjectId')] [string]$ProjectName = $env:DefaultAdoProject, [Parameter(ValueFromPipelineByPropertyName, ParameterSetName = 'ByIds')] [Alias('EndpointIds')] [string[]]$Ids, [Parameter(ValueFromPipelineByPropertyName, ParameterSetName = 'ByIds')] [ValidateSet('none', 'manage', 'use', 'view')] [string]$ActionFilter, [Parameter(ValueFromPipelineByPropertyName, ParameterSetName = 'ByNames', ValueFromPipeline)] [Alias('EndpointNames')] [string[]]$Names, [Parameter(ValueFromPipelineByPropertyName)] [string]$AuthSchemes, [Parameter(ValueFromPipelineByPropertyName)] [ValidateSet('library', 'agentcloud')] [string]$Owner, [Parameter(ValueFromPipelineByPropertyName)] [string]$Type, [Parameter(ValueFromPipelineByPropertyName)] [switch]$IncludeFailed, [Parameter()] [Alias('ApiVersion', 'Api')] [ValidateSet('7.1', '7.2-preview.4')] [string]$Version = '7.1' ) begin { Write-Verbose ("Command: $($MyInvocation.MyCommand.Name)") Write-Debug ("CollectionUri: $CollectionUri") Write-Debug ("ProjectName: $ProjectName") Write-Debug ("Ids: $($Ids -join ',')") Write-Debug ("Names: $($Names -join ',')") Write-Debug ("Version: $Version") Confirm-Default -Defaults ([ordered]@{ 'CollectionUri' = $CollectionUri 'ProjectName' = $ProjectName }) } process { try { $QueryParameters = [System.Collections.Generic.List[string]]::new() if ($PSCmdlet.ParameterSetName -eq 'ByIds') { if ($Ids) { $QueryParameters.Add("endpointIds=$($Ids -join ',')") } if ($ActionFilter) { $QueryParameters.Add("actionFilter=$ActionFilter") } } if ($PSCmdlet.ParameterSetName -eq 'ByNames') { if ($Names) { $QueryParameters.Add("endpointNames=$($Names -join ',')") } } if ($AuthSchemes) { $QueryParameters.Add("authSchemes=$AuthSchemes") } if ($Owner) { $QueryParameters.Add("owner=$Owner") } if ($Type) { $QueryParameters.Add("type=$Type") } if ($IncludeFailed.IsPresent) { $QueryParameters.Add('includeFailed=true') } $params = @{ Uri = "$CollectionUri/$ProjectName/_apis/serviceendpoint/endpoints" Version = $Version QueryParameters = if ($QueryParameters.Count -gt 0) { $QueryParameters -join '&' } else { $null } Method = 'GET' } $shouldProcessOperation = if ($Names) { "Get service endpoint(s) '$($Names -join ', ')'" } elseif ($Ids) { "Get service endpoint(s) '$($Ids -join ', ')'" } else { 'Get service endpoints' } if ($PSCmdlet.ShouldProcess($ProjectName, $shouldProcessOperation)) { try { $results = Invoke-AdoRestMethod @params $items = $results.value foreach ($i_ in $items) { [PSCustomObject]@{ id = $i_.id name = $i_.name type = $i_.type description = $i_.description authorization = $i_.authorization isShared = $i_.isShared isReady = $i_.isReady owner = $i_.owner data = $i_.data serviceEndpointProjectReferences = $i_.serviceEndpointProjectReferences projectName = $ProjectName collectionUri = $CollectionUri } } } catch { if ($_.ErrorDetails.Message -match 'NotFoundException') { if ($PSCmdlet.ParameterSetName -eq 'ByIds') { Write-Warning "Service endpoint(s) with id(s) '$($Ids -join ', ')' do not exist in project $ProjectName, skipping." } else { Write-Warning "Service endpoint(s) with name(s) '$($Names -join ', ')' do not exist in project $ProjectName, skipping." } } else { throw $_ } } } else { Write-Verbose "Calling Invoke-AdoRestMethod with $($params | ConvertTo-Json -Depth 10)" } } catch { throw $_ } } end { Write-Verbose ("Exit: $($MyInvocation.MyCommand.Name)") } } |