checks/arm/classic-admins.ps1

# RBAC/IAM — deprecated classic Service/Co-Administrators should be removed.
$items = @()
foreach ($s in Get-Subs) {
    try {
        $admins = Invoke-Arm -Path "/subscriptions/$($s.Id)/providers/Microsoft.Authorization/classicAdministrators" -ApiVersion '2015-07-01'
        foreach ($a in $admins) {
            $items += [pscustomobject]@{
                Title  = $a.properties.emailAddress
                Detail = "Classic role '$($a.properties.role)' on $($s.Name) | sub $($s.Id)"
            }
        }
    } catch { Write-Warning "classic-admins $($s.Name): $_" }
}
[pscustomobject]@{
    Name     = 'Classic (co-)administrators still present'
    Severity = 'high'
    Fix      = 'Remove classic administrators; manage access exclusively through Azure RBAC role assignments.'
    Items    = $items
}