Если вы запускаете свой скрипт на Python с ActvePython для Active Directory, вы можете использовать что-то вроде этого:
import win32com.client
ads = win32com.client.Dispatch('ADsNameSpaces')
user = ads.getObject("", "WinNT://DOMAIN/username,user")
user.Getinfo()
user.Put('userAccountControl', 65536 | user.Get('userAccountControl'))
user.Setinfo()
Но если ваш питон работает под Unix, вам нужно две вещи для общения с Active Directory: Kerberos и LDAP. Если у вас есть соединение LDAP с аутентификацией SASL (GSSAPI (KRB5)) с вашим сервером Active Directory, вы получаете доступ к атрибуту userAccountControl целевого пользователя.
userAccountControl - это целочисленный атрибут, рассматриваемый как битовое поле, в котором необходимо установить бит DONT EXPIRE PASSWORD. См. эту статью базы знаний для значений битов.