Auch wenn es ein Sicherheitsrisiko darstellt, ist es doch in manchen Umgebungen auf Grund der dort vorhandenen User nötig, Useraccounts so zu konfigurieren, dass das Passwort nie abläuft.
Neben der Möglichkeit, dies über Gruppenrichtlinien abzuarbeiten kann dies natürlich auch per Script geschehen…
Anbei ein VBScript, das die gewünschten Änderungen vornimmt.
Vorgangsweise:
Script als “PasswordNeverExpires.vbs” auf einem beliebigen Client speichern, Zeile 12 an die gewünschte OU an passen und laufen lassen.
Hinweis: es wird ein Logfile erstellt, das Auskunft über die Änderungen gibt.
'########################################################################### '# Usage: '# als PasswordNeverExpires.vbs an beliebiger Stelle auf einem Client speichern '# '# Variablen, die geändert werden MÜSSEN '# ACHTUNG: strOU ist in 'verkehrter' Reihenfolge, dh: '# strOU = "OU=1A,OU=Schueler,OU=benutzer," steht für alle User, '# die in der OU=1A sind, die wiederum in der OU=Schueler sind, und diese dann in der OU Benutzer liegt '# also: '# '# Benutzer '# |__ Schueler '# |___ 1A '# '# Hier findest Du zusätzliche Infos zu LDAP-Attributen: '# http://www.computerperformance.co.uk/Logon/LDAP_attributes_active_directory.htm strOU = "OU=1A,OU=Schueler,OU=Benutzer," 'ACHTUNG auf den Beistrich!! '# Ab hier nur mehr für Auskenner veränderbar... '############################################################################ on error resume next Dim rootDSE, domainObject Set rootDSE = GetObject("LDAP://RootDSE") domainContainer = rootDSE.Get("defaultNamingContext") Set domainObject = GetObject("LDAP://" & strOU & domainContainer) Set fs = CreateObject ("Scripting.FileSystemObject") Set outFile = fs.CreateTextFile (".\logfile_ADKonten.txt") exportUsers(domainObject) Set oDomain = Nothing Sub ExportUsers(oObject) on error resume next Dim oUser For Each oUser in oObject Select Case oUser.Class Case "user" call changeIT(oUser.distinguishedName) Case "organizationalUnit" , "container" ExportUsers(oUser) End select Next End Sub sub changeIT(myUser) 'On Error Resume Next Const ADS_UF_DONT_EXPIRE_PASSWD = &h10000 Set objUser = GetObject("LDAP://" & myuser) intUserAccountControl = objUser.Get("userAccountControl") ' Check if "Password Never Expires" already set. If Not objUser.userAccountControl AND ADS_UF_DONT_EXPIRE_PASSWD Then ' Set bit for "Password Never Expires". objUser.Put "userAccountControl", _ objUser.userAccountControl XOR ADS_UF_DONT_EXPIRE_PASSWD objUser.SetInfo outfile.WriteLine myUser & " wurde erfolgreich geaendert!" End If end Sub WScript.Quit