Public/Monitor/Get-TBMonitor.ps1

function Get-TBMonitor {
    <#
    .SYNOPSIS
        Gets one or all configuration monitors.
    .DESCRIPTION
        Retrieves configuration monitors from the UTCM API. Can get a specific
        monitor by ID or list all monitors.
    .PARAMETER MonitorId
        The ID of a specific monitor to retrieve.
    .EXAMPLE
        Get-TBMonitor
        Lists all monitors.
    .EXAMPLE
        Get-TBMonitor -MonitorId '00000000-0000-0000-0000-000000000000'
        Gets a specific monitor.
    #>

    [CmdletBinding()]
    [OutputType([PSCustomObject])]
    param(
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [Alias('Id')]
        [string]$MonitorId
    )

    process {
        $baseUri = Get-TBApiBaseUri

        if ($MonitorId) {
            $uri = '{0}/configurationMonitors/{1}' -f $baseUri, $MonitorId
            Write-TBLog -Message ('Getting monitor: {0}' -f $MonitorId)
            $response = Invoke-TBGraphRequest -Uri $uri -Method 'GET'
            return ConvertFrom-TBMonitorResponse -Response $response
        }
        else {
            $uri = '{0}/configurationMonitors' -f $baseUri
            Write-TBLog -Message 'Listing all monitors'
            $items = Invoke-TBGraphPagedRequest -Uri $uri

            foreach ($item in $items) {
                ConvertFrom-TBMonitorResponse -Response $item
            }
        }
    }
}