A maneira mais direta de fazer isso é consultar o Active Directory. Você faria uma pesquisa no usuário, seguido do atributo displayName . (Isso mapeia para o Full Name exibido no Windows.)
Você tem duas opções aqui:
Usando uma biblioteca do AD do Python, por exemplo pyad
Isso é muito específico do Windows e requer a biblioteca pywin32 . Ele depende de APIs ADSI, portanto, funcionará somente no Windows.
from pyad import aduser
user = aduser.ADUser.from_cn(username)
print user.get_attribute("displayName")
Como você obtém o nome de usuário é com você. Você pode usar getpass.getuser() , os.environ["USERNAME"] (somente para Windows), etc.
Usando uma biblioteca LDAP do Python, por exemplo ldap3
Isso segue o protocolo LDAP padrão, com uma implementação pura do Python, portanto, deve funcionar em qualquer sistema operacional cliente.
O uso de consultas LDAP brutas é um pouco mais complicado que as abstrações ADSI. Eu sugiro que você leia a documentação (que tem tutoriais decentes) e procure por mais tutoriais sobre como interagir com o Microsoft AD via ldap3.
Observe que um possível problema é que a pesquisa pelo nome de usuário (CN) sozinho pode gerar o objeto errado. É possível ter vários objetos com o mesmo CN em várias UOs. Se você quer ser mais preciso, você pode querer usar um identificador único como o SID.