我正在尝试使用pyad中的电子邮件列表获取用户名列表。我知道我可以从用户名中获取电子邮件:
user = aduser.ADUser.from_cn('username').mail
但是我想知道是否有办法做相反的事情。
答案 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,在这种情况下,只需将其添加到属性并追加行即可。