pyad - Получить имя пользователя с адреса электронной почты

Я пытаюсь получить список имен пользователей, используя список писем в pyad. Я знаю, что могу получать электронные письма от имен пользователей:

user = aduser.ADUser.from_cn('username').mail

Но мне было интересно, есть ли способ сделать обратное.

2 ответа

Я знаю, что уже слишком поздно отвечать в этой теме, но это может помочь другим, кто ищет такое решение..

Вы можете использовать предложение where с определенным условием, как показано ниже, для получения требуемых значений атрибутов.

Обратите внимание:- вам необходимо указать нужные вам атрибуты в списке атрибутов

attributes=["employeeID", "username"]

как указано выше, чтобы получить желаемые атрибуты на выходе.

import pyad.adquery

q = pyad.adquery.ADQuery()

user_email_id = 'emailID@company.com'

q.execute_query(
    attributes=["employeeID", "username"],
    where_clause="userPrincipalName = '{}'".format(user_email_id),
    base_dn="OU=*****,OU=*****,DC=****,DC=*****,DC=*****"
)

for row in q.get_results():
    print(row.get('username'))

Я не знаком с pyad, но если user - строка, и мы можем с уверенностью сказать, что электронная почта - это просто имя пользователя с добавленным к нему ".mail", тогда мы можем просто сделать...

user = "mBobgus.email"
print(user.rstrip(".email"))  


mBobgus

Метод строки.rstrip() только что удалил указанную строку с правой стороны строки.

q = pyad.adsearch.ADQuery()
q.execute_query(
attributes=["mail"]
where_clause = "objectClass = '*'"
base_dn = "ou=XXXXXX, ou=XXXX, DC=XXXXXX, DC=XXXXX")

adoutpout = []
for row in q.get_results():
    adouput.append(row["mail")
adoutput = [x for x  in adouput if x != None]
print(adoutput)

он получит любой адрес в поле Электронная почта в AD. Возможно, вы ищете userPrincipalName, в этом случае просто добавьте его в атрибуты и добавьте строку.

Другие вопросы по тегам