backup/Backup-AppleEnrollmentProfiles.ps1

#Requires -Version 7.0
function Backup-AppleEnrollmentProfiles {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory)] [string]$BackupPath,
        [Parameter(Mandatory)] [SecureString]$Token,
        [hashtable]$ScopeTagMap = @{}
    )

    try {
        $folder = Join-Path $BackupPath 'Enrollment Profiles' 'Apple'
        
        # get DEP token IDs
        $tokenUri = '/beta/deviceManagement/depOnboardingSettings'
        $tokens = Invoke-GraphRequest2 -Uri $tokenUri -Token $Token

        foreach ($depToken in $tokens) {
            # get enrollment profiles for this token
            $profileUri = "/beta/deviceManagement/depOnboardingSettings/$($depToken.id)/enrollmentProfiles"
            $profiles = Invoke-GraphRequest2 -Uri $profileUri -Token $Token

            foreach ($profile in $profiles) {
                # construct filename
                $odataType = $profile.'@odata.type'
                $type = $odataType -replace '#microsoft\.graph\.', ''
                $fileName = "$($profile.displayName)_$type"
                
                $clean = Remove-VolatileKeys -InputObject $profile
                Save-BackupItem -Item $clean -Folder $folder -FileName $fileName -ScopeTagMap $ScopeTagMap
            }
        }
        Write-Verbose "backed up apple enrollment profiles to $folder"
    }
    catch {
        Write-Error "failed to backup apple enrollment profiles: $_"
        return
    }
}

Export-ModuleMember -Function Backup-AppleEnrollmentProfiles