2

Есть ли способ в Windows Server 2003 или 2008 и в Active Directory, чтобы указать в политике, что когда срок действия пароля пользователя истекает в тот же день, его срок действия истекает в определенное время, скажем, в 4:00 утра.

Проблема возникла, потому что истечение срока происходит в середине рабочего дня, скажем, 9:00 утра. Затем, когда пользователь уже вошел в Windows в сети и использует разные приложения, они начнут работать неправильно из-за аутентификации. Они должны выйти и снова войти в систему, чтобы Windows запросила новый пароль.

Таким образом, если они входят в систему рано утром и запрашивают новый пароль, им не нужно выходить из системы в течение рабочего дня.

Один из администраторов AD сказал: «Пусть они начнут проверять, истечет ли срок действия их пароля до начала дня» ... но на самом деле, кто это делает?

И у меня нет доступа к AD, чтобы проверить эти типы политик. Так это возможно?

2 ответа2

3

AFAIK это не возможно.

Существует несколько уведомлений-напоминаний о том, что срок действия текущего пароля истекает через N дней, и предложении изменить его. Если пользователь предпочитает игнорировать это напоминание, он, к сожалению, копает себе могилу.

1

У нас похожая проблема.

Единственный способ, о котором я могу думать, - это запускать каждую ночь скрипт, который будет проходить через активный каталог и определять, какая учетная запись истекает на следующий день. Если это так, пометьте его, чтобы сменить пароль. Код будет выглядеть примерно так: Я не пробовал запускать этот скрипт, поэтому, возможно, потребуется немного изменить его:

Const SEC_IN_DAY = 86400 
Const ADS_UF_DONT_EXPIRE_PASSWD = &h10000 
Const ADS_SCOPE_SUBTREE = 1000

dim strname
dim strdist
dim dtmvalue

on error resume next


        Set objConnection = CreateObject("ADODB.Connection")
        Set objCommand =   CreateObject("ADODB.Command")
        objConnection.Provider = "ADsDSOObject"
        objConnection.Open "Active Directory Provider"
        Set objCommand.ActiveConnection = objConnection
        objCommand.Properties("Page Size") = 1000
        objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE 
        objCommand.CommandText = "SELECT distinguishedName, profilepath, name from 'LDAP://dc=Example,dc=com' where objectCategory = 'User'"        


     Set objuserRecordSet = objCommand.Execute

objUSerRecordSet.MoveFirst

Do Until objuserRecordSet.EOF  

    strdist = objuserRecordSet.Fields("distinguishedName").Value
    strname = objuserRecordSet.Fields("name").Value

    Set objUserLDAP = GetObject _ 
    ("LDAP://" & strdist) 

    intCurrentValue = objUserLDAP.Get("userAccountControl") 

        dtmValue = objUserLDAP.PasswordLastChanged  

        If intCurrentValue and ADS_UF_DONT_EXPIRE_PASSWD Then 
            x  =  "The password does not expire." 
        Else 
                Set objDomainNT = GetObject("WinNT://escc.gov.uk") 
                intMaxPwdAge = objDomainNT.Get("MaxPasswordAge") 
                    If intMaxPwdAge < 0 Then 
                        x  = "Password does not expire" 
                    Else
                        intMaxPwdAge=intMaxPwdAge/86400
                        strold = ((dtmValue + intMaxPwdAge)-now)

                        if strold < 2 and strold > 0 then
                            objUserLDAP.pwdLastSet = 0
                            objUserLDAP.SetInfo
                        end if
                    end if

        End If 

    dtmValue= ""

    objuserrecordset.movenext   

Loop

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .