Private/WinGet/Get-IntuneProactiveRemediationAvailability.ps1

function Get-IntuneProactiveRemediationAvailability {
    [CmdletBinding()]
    [OutputType([pscustomobject])]
    param()

    try {
        Invoke-HydrationGraphRequest -Method GET -Uri "beta/deviceManagement/deviceHealthScripts?`$top=1" | Out-Null
        Write-Debug 'Proactive remediation availability check passed.'
        return [pscustomobject]@{
            IsAvailable = $true
            Status      = 'Available'
            Message     = 'Proactive remediations are available.'
        }
    } catch {
        $statusCode = Get-GraphStatusCode -ErrorRecord $_
        $errorMessage = Get-GraphErrorMessage -ErrorRecord $_

        $isPermissionIssue = $statusCode -eq 403 -or
        $errorMessage -match 'forbidden|access denied|insufficient privileges|insufficient permission'
        $isFeatureUnavailable = $statusCode -eq 404 -or
        $errorMessage -match 'license|not enabled|not found'

        if ($isPermissionIssue) {
            Write-Debug "Proactive remediation availability check failed due to permissions: $errorMessage"
            return [pscustomobject]@{
                IsAvailable = $false
                Status      = 'InsufficientPermissions'
                Message     = 'Insufficient permissions to access device health scripts.'
            }
        }

        if ($isFeatureUnavailable) {
            Write-Debug "Proactive remediation availability check failed because the feature is unavailable: $errorMessage"
            return [pscustomobject]@{
                IsAvailable = $false
                Status      = 'FeatureUnavailable'
                Message     = 'Device health scripts are not available in this tenant.'
            }
        }

        throw
    }
}