1

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

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

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

4

3 回答 3

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'))
于 2019-06-06T18:56:51.157 回答
0

我对 pyad 不熟悉,如果用户是一个字符串,我们可以自信地说电子邮件只是附加了“.mail”的用户名,那么我们可以这样做......

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


mBobgus

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

于 2018-12-05T19:16:20.687 回答
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,在这种情况下,只需将其添加到属性并追加行。

于 2018-12-26T14:25:54.737 回答