pyad-从电子邮件地址获取用户名

时间:2018-12-05 19:09:18

标签: python active-directory pyad

我正在尝试使用pyad中的电子邮件列表获取用户名列表。我知道我可以从用户名中获取电子邮件:

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

但是我想知道是否有办法做相反的事情。

3 个答案:

答案 0 :(得分:1)

我知道现在响应这个线程为时已晚,但这可能会帮助其他正在寻找这种解决方案的人..

您可以使用具有特定条件的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'))

答案 1 :(得分:0)

我不熟悉pyad,但是,如果用户是字符串,我们可以放心地说,电子邮件只是附加了“ .mail”的用户名,那么我们可以...

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


mBobgus

.rstrip()字符串方法只是从字符串的右侧删除了指定的字符串。

答案 2 :(得分:0)

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,在这种情况下,只需将其添加到属性并追加行即可。