我正在创建一个python脚本,它可以连接到AD并搜索用户属性,比如(姓名、电子邮件、位置、电子邮件、扩展)。目前,我正在搜索用户通过CN找到他们的广告帐户。我遇到的问题是,有些用户的CN中有一个中间的首字母,但显示名称上却没有。是否可以通过显示名称或sAMAccount名称搜索用户,从而能够从他们的AD帐户中提取属性?
脚本在下面,在CN搜索时运行良好。
from tkinter import N
from pyad import*
from pyad import adquery
from pyad import aduser
from nameparser import HumanName
from nameparser.config import CONSTANTS
from StatesFun import StatesL
#connecting to AD
pyad.set_defaults (ldap_server="", Adminusername="", password="")
UserName = input("Please input the username of the user requesting a DAT account, (first lastname, not case sensitive)\n")
#Searching user in AD
user = pyad.aduser.ADUser.from_cn(UserName)
#searching for user attributes
#pop takes element out of list and converts to string
nameAD = user.get_attribute("cn")
name = nameAD.pop(0)
emailAD = user.get_attribute("mail")
email = emailAD.pop(0)
stAD = user.get_attribute("st")
st = stAD.pop(0)
extAD = user.get_attribute("telephoneNumber")
ext = extAD.pop(0)
#Parses name for initials
def initials(full_name):
initial=""
if (len(full_name) == 0):
return
first_middle_last = full_name.split(" ")
for name in first_middle_last:
initial=initial+name[0].upper()+""
return initial
#Splits First / Last Name into own text values
Hname = HumanName(name)
Hname = Hname
#Parses TQL Username from Email
DatUsrNameAD = (email.split('@'))
DatUsrName = DatUsrNameAD.pop(0)
print(DatUsrName)
print(Hname.first)
print(Hname.last)
print(initials(name))
print(StatesL(st))
print(ext)
print(email)发布于 2022-08-12 19:19:53
您可以使用这样的东西进行SamAccountName搜索。只需更新base_dn即可与您公司的域设置匹配。
import pyad.adquery
q = pyad.adquery.ADQuery()
user = 'abc123'
q.execute_query(
attributes = ["departmentNumber"],
where_clause = f"SamAccountName = '{user}'",
base_dn="DC=*,DC=*,DC=*"
)
for row in q.get_results():
dept = row["departmentNumber"]
print (dept)https://stackoverflow.com/questions/73280238
复制相似问题