public/Get-ZendeskGroup.ps1

function Get-ZendeskGroup {
    <#
    .DESCRIPTION
    Utilized for searching Zendesk group objects via REST API. This function can return multiple values possibly.
     
    .PARAMETER ZendeskInstanceName
    The subdomain value of the Zendesk URL
    Example : https://{subdomain}.zendesk.com
     
    .PARAMETER ZendeskAPIUserName
    Full username value of the token username.
    Example : svc_msp@msp.contoso.com/token
     
    .PARAMETER ZendeskAPIToken
    Full REST API token with admin level rights to the Zendesk instance.
     
    .PARAMETER ZendeskGroupName
    The exact name of the zendesk group to search for.
     
    .EXAMPLE
    An example
    #>

    [CmdletBinding()]
    param (
        # Zendesk Instance Name
        [Parameter(Mandatory=$true)]
        [string]
        $ZendeskInstanceName,
        # Zendesk API Token UserName
        [Parameter(Mandatory=$true)]
        [string]
        $ZendeskAPIUserName,
        # Zendesk API Token
        [Parameter(Mandatory=$true)]
        [string]
        $ZendeskAPIToken,
        # Zendesk Group Name
        [Parameter(Mandatory=$true)]
        [string]
        $ZendeskGroupName
    )
    process {
        $authHeader = @{Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("$($zendeskAPIUserName):$($zendeskAPIToken)"));}

        $uri = "https://$($zendeskInstanceName).zendesk.com/api/v2/groups.json"
        try {
            [array]$request = Invoke-RestMethod -Uri $uri -Method Get -Headers $authHeader -ErrorAction Stop
            if ($request.count -ge 1) {
                [array]$groupSearch = $request.groups | Where-Object { $_.name -eq $zendeskGroupName }
                if ($groupSearch.count -ge 1) {
                    return $groupSearch | Select-Object name, id, url
                }
                else {
                    throw "Zendesk group name $($zendeskGroupName) was not found, please ensure the group name input is valid and that it exists in the Zendesk instance!"
                }
            }
            else {
                throw "No valid groups were returned from Zendesk, please ensure that all inputs to function are valid and try again!"
            }
        }
        catch {
            throw "$($_)"
        }
    }
}