如何使用pyad创建密码永不过期的Active Directory用户
如何用pyad创建“密码永不过期”的AD用户
嘿,我来帮你搞定这个问题!当你用pyad创建Active Directory用户后,想要开启“密码永不过期”选项,本质是要修改用户的userAccountControl属性——这是AD里控制账户行为的位掩码属性,其中“密码永不过期”对应的标志位是65536(十六进制0x10000)。
pyad的ADUser.create()方法本身没有直接设置这个选项的参数,所以我们需要在创建用户后手动更新这个属性。这里有两种实现方式,推荐用pyad内置常量来提升代码可读性:
修改后的完整代码
from pyad import * import pyadconstants # 设置AD服务器和认证信息 pyad.set_defaults(ldap_server="IT-LHQ-DC1.LIFEALIKE.LAB", username="administrator", password="password") # 定位到目标OU ou = pyad.adcontainer.ADContainer.from_dn("ou=All_Users, dc=LIFEALIKE, dc=LAB") # 创建新用户 new_user = pyad.aduser.ADUser.create("test.02", ou, password="password") # 获取当前用户的userAccountControl值(转为整数格式) current_uac = new_user.get_attribute("userAccountControl", as_integer=True) # 按位或操作,保留原有属性的同时添加“密码永不过期”标志 new_uac = current_uac | pyadconstants.UAC_PASSWORD_NEVER_EXPIRES # 保存属性修改 new_user.update_attribute("userAccountControl", new_uac)
代码说明
- 导入
pyadconstants模块后,直接用UAC_PASSWORD_NEVER_EXPIRES常量代替硬编码的65536,代码更直观,也避免记错数字。 - 用
get_attribute("userAccountControl", as_integer=True)获取当前属性值并转为整数,方便进行位运算。 - 按位或操作
|能确保我们在不改动原有其他账户属性的前提下,新增“密码永不过期”的设置。
如果不想导入额外模块,也可以直接用数字65536替换常量,效果完全一致:
new_uac = current_uac | 65536
这样创建出来的用户就会自动勾选“密码永不过期”选项啦!
内容的提问来源于stack exchange,提问作者ScalaMan
相关产品推荐
相关产品推荐

