欢迎各位兄弟 发布技术文章
这里的技术是共享的
在 Python 中实现类似于 PowerShell 中的 Set-ADUser
和 Get-ADUser
的功能,可以使用 pywin32
库与 Active Directory Service Interfaces (ADSI) 进行交互。然而,更常见和强大的方式是使用 ldap3
库直接通过 LDAP 协议与 Active Directory 进行通信。
以下是如何使用 ldap3
库来实现这些功能的示例:
安装 ldap3
首先,你需要安装 ldap3
库。你可以使用 pip
来安装它:
bash复制代码pip install ldap3
实现 Get-ADUser
下面是一个使用 ldap3
来获取 Active Directory 用户信息的示例:
python复制代码from ldap3 import Server, Connection, ALL, NTLM, SUBTREE
# Active Directory 服务器信息 ldap_server = 'ldap://your-ad-server.yourdomain.com' ldap_username = 'your-admin-username@yourdomain.com' ldap_password = 'your-admin-password' base_dn = 'DC=yourdomain,DC=com' # 修改为你的域的实际 DN
# 连接到 Active Directory 服务器 server = Server(ldap_server, get_info=ALL) conn = Connection(server, user=ldap_username, password=ldap_password, authentication=NTLM, auto_bind=True)
# 搜索用户 search_filter = '(objectClass=user)' search_base = base_dn search_scope = SUBTREE
conn.search(search_base, search_filter, search_scope, attributes=['cn', 'sn', 'givenName', 'mail', 'samAccountName'])
# 输出搜索结果 for entry in conn.entries: print(f"User: {entry.cn.value}, Last Name: {entry.sn.value}, First Name: {entry.givenName.value}, Email: {entry.mail.value}, Username: {entry.samAccountName.value}")
# 断开连接 conn.unbind()
实现 Set-ADUser
下面是一个使用 ldap3
来更新 Active Directory 用户信息的示例:
python复制代码from ldap3 import Server, Connection, ALL, NTLM, MODIFY_REPLACE
# Active Directory 服务器信息 ldap_server = 'ldap://your-ad-server.yourdomain.com' ldap_username = 'your-admin-username@yourdomain.com' ldap_password = 'your-admin-password' base_dn = 'DC=yourdomain,DC=com' # 修改为你的域的实际 DN
# 连接到 Active Directory 服务器 server = Server(ldap_server, get_info=ALL) conn = Connection(server, user=ldap_username, password=ldap_password, authentication=NTLM, auto_bind=True)
# 用户 DN user_dn = f'CN=John Doe,OU=Users,DC=yourdomain,DC=com' # 修改为实际的用户 DN
# 要修改的属性 changes = { 'mail': ['newemail@yourdomain.com'], # 修改邮箱 'sn': ['NewLastName'] # 修改姓氏 }
# 准备修改操作 mod_ops = [] for attr, values in changes.items(): if len(values) == 1: mod_ops.append((MODIFY_REPLACE, attr, values[0])) else: mod_ops.append((MODIFY_REPLACE, attr, values))
# 执行修改 conn.modify(user_dn, mod_ops)
# 断开连接 conn.unbind()
注意事项:
连接信息:确保使用正确的服务器地址、用户名、密码和域信息。
用户 DN:在 Set-ADUser
示例中,你需要提供正确的用户 DN(Distinguished Name)。这通常可以通过先运行 Get-ADUser
来获取。
安全性:不要在生产代码中硬编码用户名和密码。考虑使用环境变量或安全存储机制。
权限:确保你使用的管理员账户具有足够的权限来读取和修改 Active Directory 中的用户信息。
这些示例应该能帮助你在 Python 中实现类似于 PowerShell Set-ADUser
和 Get-ADUser
的功能。