我正在尝试使用 pyad 中的电子邮件列表获取用户名列表。我知道我可以从用户名收到电子邮件:
user = aduser.ADUser.from_cn('username').mail
但我想知道是否有办法做相反的事情。
我正在尝试使用 pyad 中的电子邮件列表获取用户名列表。我知道我可以从用户名收到电子邮件:
user = aduser.ADUser.from_cn('username').mail
但我想知道是否有办法做相反的事情。
我知道现在回复这个帖子为时已晚,但这可能会帮助其他正在寻找此类解决方案的人..
您可以使用具有特定条件的 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 不熟悉,但如果用户是一个字符串,我们可以自信地说电子邮件只是附加了“.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,在这种情况下,只需将其添加到属性并追加行。