Get-CosmosCollection.ps1

function Get-CosmosCollection {
    <#
    .SYNOPSIS
    Get a CosmosDB Collection
     
    .DESCRIPTION
    Gets a Cosmos Collection in the desired Database
     
    .PARAMETER DatabaseName
    The name of the Database containing your Collection
     
    .PARAMETER CollectionName
    The name of the Collection you want to retrieve if you are looking for a specific Collection
     
    .PARAMETER All
    This switch returns all the Collections in the Database
     
    .PARAMETER CosmosDBVariables
    This is the Script variable generated by Connect-CosmosDB - no need to supply this variable, unless you get really creative
     
    .EXAMPLE
    Get-CosmosCollection -DatabaseName MyPrivateCosmos -All
 
    Returns all Collections in MyPrivateCosmos
 
    .EXAMPLE
    Get-CosmosCollection -DatabaseName MyPrivateCosmos -CollectionName Chaos
 
    Returns the Chaos Collection from MyPrivateCosmos
     
    .NOTES
    https://docs.microsoft.com/en-us/rest/api/documentdb/list-collections
    https://docs.microsoft.com/en-us/rest/api/documentdb/get-a-collection
    #>

    [CmdletBinding(DefaultParameterSetName='Named')]
    param (
        [Parameter(Mandatory=$true,
        HelpMessage='Name of the Database containing the Collection')]
        [string]$DatabaseName,
        [Parameter(ParameterSetName='Named',
        Mandatory=$true,
        HelpMessage='Name of the Collection')]
        [string]$CollectionName,
        [Parameter(ParameterSetName='All')]
        [switch]$All,
        [Parameter(Mandatory=$false,
        HelpMessage="Use Connect-CosmosDB to create this Variable collection")]
        [hashtable]$CosmosDBVariables=$Script:CosmosDBVariables
    )
    
    begin {
        Test-CosmosDBVariable $CosmosDBVariables
        $Database = $Script:CosmosDBConnection[($DatabaseName + '_db')]
        if (-not $Database) {
            Write-Warning "$DatabaseName not found"
            continue
        }
        $Verb = 'GET'
        $Url = '{0}/{1}/colls' -f $CosmosDBVariables['URI'],$Database._self
        $ResourceType = 'colls'
        $Header = New-CosmosDBHeader -resourceId $Database._rid -resourceType $ResourceType -Verb $Verb
        try {
            $Return = Invoke-RestMethod -Uri $Url -Headers $Header -Method $Verb -ErrorAction Stop
        }
        catch {
            Write-Warning -Message $_.Exception.Message
            continue
        }
        if ($All) {
            $Return.DocumentCollections
        }
        if ($CollectionName){
            $Return.DocumentCollections | Where-Object {$_.id -match $CollectionName}
        }
    }
    
    process {
    }
    
    end {
    }
}