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