Public/Get-PSADORelease.ps1


function Get-PSADORelease {
    <#
    .SYNOPSIS
    Get information about Releases within a project in Azure DevOps
 
    .DESCRIPTION
    List Azure DevOps Releases that belong to a project.
    You can list them all, or select builds based on Buildnumbers or the source repository
 
    .PARAMETER Project
    The name of the Project to search within. So https://dev.azure.com/{Organization}/{Project}
 
    .PARAMETER ReleaseName
    The number of the Release that is needed
 
    .PARAMETER ReleaseDefinition
    The Definition that the release is based on.
 
    .PARAMETER Organization
    The name of the Companyaccount in Azure DevOps. So https://dev.azure.com/{Organization}
 
    .PARAMETER User
    A username, with format user@Company.com
 
    .PARAMETER Token
    the PAT for the connection.
    https://docs.microsoft.com/en-us/azure/devops/organizations/accounts/use-personal-access-tokens-to-authenticate?view=azure-devops
 
    .EXAMPLE
    Get-PSADORelease -Organization Company -Project Project01
 
    Shows all Releases for the project Project01 in the Organization Company
 
    .EXAMPLE
    Get-PSADORelease -Organization Company -Project Project01 -ReleaseDefinition Rep01-CD
 
    Returns all releases that have been pushed for the definition Rep01-CD
 
    .NOTES
    Author: Barbara Forbes
    Module: Psado
    https://4bes.nl
    @Ba4bes
    #>


    [CmdletBinding()]
    param(
        [Parameter(Mandatory = $true, Position = 0)]
        [ValidateNotNullorEmpty()]
        [string]$Project,

        [Parameter()]
        [string]$ReleaseName,

        [Parameter()]
        [string]$ReleaseDefinition,

        [Parameter()]
        [ValidateNotNullorEmpty()]
        [string]$Organization,

        [Parameter()]
        [ValidateNotNullorEmpty()]
        [string]$User,

        [Parameter()]
        [ValidateNotNullorEmpty()]
        [string]$Token
    )

    $Header = New-Header -User $User -Token $Token

    [uri]$uri = "https://vsrm.dev.azure.com/$Organization/$Project/_apis/release/releases?api-version=5.0"

    $Releases = Get-PSADOApi -Uri $Uri -Header $Header

    if ($ReleaseName) {
        $Releases = $Releases | Where-Object {$_.name -eq $ReleaseName}
    }
    elseif ($ReleaseDefinition) {
        $Releases = $Releases | Where-Object {$_.releasedefinition.name -eq $ReleaseDefinition}
    }

    foreach ($Release in $Releases) {
        $Release.PSObject.TypeNames.Insert(0, 'PSADO.ADORelease')
    }
    $Releases
}