Script, um für alle User einer OU den Haken “Kennwort läuft nie ab” zu setzen


sehr verwirrender ArtikelNaja, ganz OKbrauchbar für Checker...guter Artikelsehr guter Artikel - Danke [2 Bewertung, Durchschnitt: 3,00]

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

This entry was posted in Active Directory, VBScript. Bookmark the permalink.

2 Responses to Script, um für alle User einer OU den Haken “Kennwort läuft nie ab” zu setzen

  1. Bernhard says:

    oder mit Powershell
    Import-Module ActiveDirectory
    Get-ADUser -Filter * -SearchBase “OU=TestOU,DC=TestDomain,DC=Local” |
    Set-ADUser -PasswordNeverExpires:$True

Hinterlasse eine Antwort