Zeitplan für den Ablauf des Passworts zu einem bestimmten Zeitpunkt

Zeitplan für den Ablauf des Passworts zu einem bestimmten Zeitpunkt

Gibt es in Windows Server 2003 oder 2008 und in Active Directory eine Möglichkeit, in einer Richtlinie anzugeben, dass das Kennwort eines Benutzers, wenn es an diesem Tag abläuft, zu einer bestimmten Uhrzeit, beispielsweise um 4:00 Uhr, abläuft?

Das Problem trat auf, weil das Ablaufdatum mitten am Arbeitstag, beispielsweise um 9:00 Uhr, eintritt. Wenn ein Benutzer dann bereits im Netzwerk bei Windows angemeldet ist und verschiedene Anwendungen verwendet, verhalten sich diese aufgrund der Authentifizierung falsch. Er muss sich ab- und wieder anmelden, damit Windows nach dem neuen Kennwort fragt.

Wenn Sie also beim Anmelden am frühen Morgen nach dem neuen Kennwort gefragt werden, müssen Sie sich während des Arbeitstages nicht erneut abmelden.

Einer der AD-Administratoren sagte: „Lassen Sie sie vor Beginn des Tages prüfen, ob ihr Kennwort abläuft.“ Aber mal ehrlich, wer macht so etwas?

Und ich habe keinen Zugriff auf ein AD, um diese Art von Richtlinien zu überprüfen. Ist das also möglich?

Antwort1

Soweit ich weiß, ist das nicht möglich.

Es können mehrere Erinnerungsbenachrichtigungen erfolgen, die darauf hinweisen, dass das aktuelle Passwort in N Tagen abläuft und die Möglichkeit bieten, es zu ändern. Wenn der Benutzer diese Erinnerung ignoriert, gräbt er sich leider sein eigenes Grab.

Antwort2

Wir haben ein ähnliches Problem.

Die einzige Möglichkeit, die mir einfällt, ist, jede Nacht ein Skript auszuführen, das das Active Directory durchsucht und ermittelt, welches Konto am nächsten Tag abläuft. Wenn dies der Fall ist, markieren Sie es, um das Kennwort zu ändern. Der Code würde ungefähr wie folgt aussehen; ich habe nicht versucht, dieses Skript auszuführen, daher muss es möglicherweise ein wenig optimiert werden:

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

verwandte Informationen