public/maester/intune/Test-MtManagedDeviceCleanupSettings.ps1

<#
.SYNOPSIS
    Ensure device clean-up rule is configured
 
.DESCRIPTION
    The device clean-up rule should be configured
 
.EXAMPLE
    Test-MtManagedDeviceCleanupSettings
 
    Returns true if the device clean-up rule is configured
 
.LINK
    https://mycorp.dev/docs/commands/Test-MtManagedDeviceCleanupSettings
#>

function Test-MtManagedDeviceCleanupSettings {
    [CmdletBinding()]
    [OutputType([bool])]
    [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseSingularNouns', '', Justification = 'This test refers to multiple settings.')]
    param()

    Write-Verbose "Testing device clean-up rule configuration"
    if ((Get-MtLicenseInformation EntraID) -eq "Free") {
        Add-MtTestResultDetail -SkippedBecause NotLicensedEntraIDP1
        return $null
    }

    $return = $true
    try {
        $deviceCleanupSettings = Invoke-MtGraphRequest -RelativeUri "deviceManagement/managedDeviceCleanupSettings" -ApiVersion beta
        if ((-not $deviceCleanupSettings.deviceInactivityBeforeRetirementInDays) -or ($deviceCleanupSettings.deviceInactivityBeforeRetirementInDays -eq 0)) {
            $testResultMarkdown = "Your Intune device clean-up rule is not configured."
            $return = $false
        } else {
            $testResultMarkdown = "Well done. Your Intune device clean-up rule is configured to retire inactive devices after $($deviceCleanupSettings.deviceInactivityBeforeRetirementInDays) days."
        }
        Add-MtTestResultDetail -Result $testResultMarkdown
    } catch {
        $return = $false
        Write-Error $_.Exception.Message
    }
    return $return
}