Public/Graph/Get-GraphMailFolderChild.ps1

function Get-GraphMailFolderChild {
    [CmdletBinding()]
    param (
        [Parameter(Mandatory)]
        $UserPrincipalName,

        [Parameter()]
        $Mail,

        [Parameter(Mandatory)]
        $DisplayName,

        [Parameter(ValueFromPipeline)]
        $FolderList
    )
    process {
        foreach ($Folder in $FolderList) {
            $RestSplat = @{
                Uri     = "https://graph.microsoft.com/beta/users/{0}/mailFolders/{1}/childFolders" -f $UserPrincipalName, $Folder.Id
                Headers = @{ "Authorization" = "Bearer $Token" }
                Method  = 'Get'
            }
            $Children = (Invoke-RestMethod @RestSplat -Verbose:$false).value
            foreach ($Child in $Children) {
                [PSCustomObject]@{
                    DisplayName       = $DisplayName
                    Mail              = $Mail
                    UserPrincipalName = $UserPrincipalName
                    Folder            = $Child.DisplayName
                    ChildFolderCount  = $Child.ChildFolderCount
                    unreadItemCount   = $Child.unreaditemCount
                    totalItemCount    = $Child.unreaditemCount
                    wellKnownName     = $Child.wellKnownName
                    ParentFolderId    = $Child.ParentFolderId
                    Id                = $Child.Id
                }
                if ($Child.ChildFolderCount -ge 1) {
                    $ChildSplat = @{
                        DisplayName       = $UPN.DisplayName
                        Mail              = $UPN.Mail
                        UserPrincipalName = $UPN.UserPrincipalName
                    }
                    $Child | Get-GraphMailFolderChild @ChildSplat
                }
            }
        }
    }
}