Public/New-KritTcmMonitor.ps1

function New-KritTcmMonitor {
    <#
    .SYNOPSIS
        Create a TCM configuration monitor.
    #>

    [CmdletBinding(SupportsShouldProcess, ConfirmImpact='Medium')]
    param(
        [Parameter(Mandatory)][string]$DisplayName,
        [Parameter(Mandatory)][object]$Baseline,
        [string]$Description,
        [hashtable]$Parameters
    )

    $body = [ordered]@{
        displayName = $DisplayName
        baseline = $Baseline
    }
    if ($Description) { $body['description'] = $Description }
    if ($Parameters) { $body['parameters'] = $Parameters }

    if ($PSCmdlet.ShouldProcess('Microsoft Graph', "POST /admin/configurationManagement/configurationMonitors ($DisplayName)")) {
        $response = Invoke-MgGraphRequest -Method POST -Uri 'https://graph.microsoft.com/v1.0/admin/configurationManagement/configurationMonitors' -Body ($body | ConvertTo-Json -Depth 32) -ContentType 'application/json' -ErrorAction Stop
        [pscustomobject]@{
            Action = 'New-KritTcmMonitor'
            Id = $response.id
            DisplayName = $response.displayName
            Status = $response.status
            Mode = $response.mode
            MonitorRunFrequencyInHours = $response.monitorRunFrequencyInHours
            RawResponse = $response
        }
    }
}