Private/Get-ManagerEmailFromUserDN.ps1

function Get-ManagerEmailFromUserDN {
    param(
        [Parameter(Mandatory = $true)]
        [string]$UserDN
    )

    try {
        # Step 1: Bind to user object using their DN
        $user = [ADSI]("LDAP://" + $UserDN)

        # Step 2: Get manager DN (may be null)
        $managerDN = $user.Properties["manager"]

        if (-not $managerDN) {
            Write-Verbose "No manager attribute found for user: $UserDN"
            return $null
        }

        # Step 3: Bind to manager object and get email
        $manager = [ADSI]("LDAP://" + $managerDN[0])
        $email = $manager.Properties["mail"]

        return $email
    }
    catch {
        Write-Warning "Error fetching manager email for $UserDN : $_"
        return $null
    }
}