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







