Get-AzCosmosDbAccount.ps1

function Get-AzCosmosDbAccount {
    <#
    .SYNOPSIS
    Returns information about CosmosDB accounts in the current subscription.
    You can pass a single Account name or ResourceGroup name
 
    .PARAMETER AccountName
    CosmosDB Account name to return information for
    Accepts wildcards
 
    .PARAMETER ResourceGroupName
    Resource Group containing the CosmosDB account to look for
    Accepts wildcards
 
    .EXAMPLE
    Get-AzCosmosDbAccount -AccountName mycosmos*
 
    AccountName : mycosmosaccount
    ResourceGroupName : mycosmosaccountRG
    ResourceType : Microsoft.DocumentDb/databaseAccounts
    Location : northcentralus
    ResourceId : /subscriptions/f897c2fa-a735-4e03-b019-890cd2f7109e/resourceGroups/mycosmosaccountRG/providers/Microsoft.DocumentDb/databaseAccounts/mycosmosaccount
 
    .NOTES
    This function uses Get-AzResource -ApiVersion '2018-11-01'
    #>


    [CmdletBinding()]
    param (
        [parameter(ValueFromPipeline, ValueFromPipelineByPropertyName, Position = 1)]
        [string]$AccountName = '*',

        [parameter(ValueFromPipelineByPropertyName, Position = 2)]
        [string]$ResourceGroupName = '*'
    )

    process {
        $resources = $null
        $resources = Get-AzResource -ResourceType 'Microsoft.DocumentDb/databaseAccounts' -ApiVersion '2018-11-01' | Where-Object 'ResourceGroupName' -Like $ResourceGroupName | Where-Object 'Name' -Like $AccountName

        # for consistency and make pipeline use easier, I'm adding a new properly 'AccountName';
        # this notation is needed to maintain the object type.
        # we could have piped the previous command to Select-Object and add the new property @{l='AccountName';e={$_.Name}}
        # anyway that syntax would have returned a generic PSCustomObject type
        $res = $null
        foreach ($res in $resources) {
            $res | Add-Member -Name 'AccountName' -MemberType 'NoteProperty' -TypeName [System.String] -Value $res.Name
            return $res
        }
    }
}