欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

python 实现 powershell 的 set-aduser 和 get-aduser 文心一言 chatpgt 有大用 有大大用

在 Python 中实现类似于 PowerShell 中的 Set-ADUser 和 Get-ADUser 的功能,可以使用 pywin32 库与 Active Directory Service Interfaces (ADSI) 进行交互。然而,更常见和强大的方式是使用 ldap3 库直接通过 LDAP 协议与 Active Directory 进行通信。

以下是如何使用 ldap3 库来实现这些功能的示例:

  1. 安装 ldap3

    首先,你需要安装 ldap3 库。你可以使用 pip 来安装它:

    bash复制代码

    pip install ldap3
  2. 实现 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()
  3. 实现 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()

注意事项

  1. 连接信息:确保使用正确的服务器地址、用户名、密码和域信息。

  2. 用户 DN:在 Set-ADUser 示例中,你需要提供正确的用户 DN(Distinguished Name)。这通常可以通过先运行 Get-ADUser 来获取。

  3. 安全性:不要在生产代码中硬编码用户名和密码。考虑使用环境变量或安全存储机制。

  4. 权限:确保你使用的管理员账户具有足够的权限来读取和修改 Active Directory 中的用户信息。

这些示例应该能帮助你在 Python 中实现类似于 PowerShell Set-ADUser 和 Get-ADUser 的功能。


普通分类: