Войти

Показать полную графическую версию : Windows AD 2003 и атрибуты пользователя


oren_yastreb
08-09-2011, 14:33
Windows 2003 server. Active directory
Имя сервера Proliantd
Имя домена ARB.COM

Добрый день!

У меня в AD пользователи раскинуты по 12 подразделениям(P1,P2...P12). У каждого пользователя в атрибутах стоит галка "Запретить смену пароля пользователем" и "Срок действия пароля неограничен".

Мне нужно заставить пользователей поменять свой пароль. Т.Е. Убрать галочки "Запретить смену пароля пользователем" и "Срок действия пароля неограничен" и у каждого пользователя в подразделении поставить галку "Требовать смену пароля при следующем входе в систему".
Как это скриптом сделать?

Находил такой вариант, но он мне выдал только (null): 0x80005000
Set objUser = GetObject _
("LDAP://CN=user,OU=P1,DC=ARB,DC=com")
objUser.Put "pwdLastSet", 0
objUser.SetInfo

oren_yastreb
08-09-2011, 15:54
Получился у меня такой скипт . В принципе работает. Снимает галку "Срок действия пароля" и ставит "Требовать смену пароля".

Set objOU = GetObject ("LDAP://ou=P1,dc=ARB,dc=com")
objOU.Filter = Array("user")
For Each objUser In objOU
'wscript.echo objUser.adspath
objUserFlags = objUser.Get("UserAccountControl")

objPasswordExpirationFlag = 66048
'objPasswordExpirationFlag = 512

'objPasswordMustChanged = 0 ставит галку требовать смену пароля
objPasswordMustChanged = 0

objUser.Put "UserAccountControl", objPasswordExpirationFlag
objUser.Put "pwdLastSet", objPasswordMustChanged
objUser.SetInfo
Next

==============
Но вот проблема подразделение P1 имеет в Аctive Directory подразделения(B1,B2..B7). Т.е. P1 - это верхушка дерева.
Если в строке делаю Set objOU = GetObject ("LDAP://ou=B1,dc=ARB,dc=com") то получаю сообщение
"(null): Такой объект на сервере отсутствует."
Как правильно указать в строке Set objOU = GetObject ("LDAP://ou=??,dc=ARB,dc=com") подразделения B1..B7 ??




© OSzone.net 2001-2012