Créer de nouveaux utilisateurs dans Active Directory en VBScript

  • igore
  • Born
  • Born
  • No Avatar
  • Inscription: Juil 05, 2005
  • Messages: 3
  • Status: Offline

Message Juillet 5th, 2005, 2:15 am

Je peux créer des utilisateurs, mais j'ai problème de définir les propriétés.

Je veux créer des utilisateurs avec ce propriétés:

CANT CHANGE MOT DE PASSE UTILISATEUR
PASSWORD récent EXPIRÉ

J'utilise ce script. Ce script crée l'utilisateur, mais l'attribut USER CANT CHANGE PASSWORD ne pouvez pas installer:

[code]
Const ADS_UF_SCRIPT = & H1
Const ADS_UF_ACCOUNTDISABLE = & H2
Const ADS_UF_HOMEDIR_REQUIRED = & H8
Const ADS_UF_LOCKOUT = & H10
Const ADS_UF_PASSWD_NOTREQD = & H20
Const ADS_UF_PASSWD_CANT_CHANGE = & H40
Const ADS_UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED = & h80
Const ADS_UF_TEMP_DUPLICATE_ACCOUNT = & H100
Const ADS_UF_NORMAL_ACCOUNT = & H200
Const ADS_UF_INTERDOMAIN_TRUST_ACCOUNT = & H800
Const ADS_UF_WORKSTATION_TRUST_ACCOUNT = & H1000
Const ADS_UF_SERVER_TRUST_ACCOUNT = & H2000
Const ADS_UF_DONT_EXPIRE_PASSWD = & H10000
Const ADS_UF_MNS_LOGON_ACCOUNT = & H20000
Const ADS_UF_SMARTCARD_REQUIRED = & H40000
Const ADS_UF_TRUSTED_FOR_DELEGATION = & H80000
Const ADS_UF_NOT_DELEGATED = & H100000
Const ADS_UF_USE_DES_KEY_ONLY = & H200000
Const ADS_UF_DONT_REQUIRE_PREAUTH = & H400000
Const ADS_UF_PASSWORD_EXPIRED = & H800000
Const ADS_UF_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION = & H1000000



MsgBox "appelant les sous"
appel createuser ( "nom1", "n1", "123456")


Public Sub createuser (strName, strSAMAccountName, strInitialPassword)
Dim objRootDSE
Dim objUsers
Dim objNewUser
Dim sOU1
Dim sRoot

On Error Resume Next

Liaison à l'objet RootDSE.
Set objRootDSE = GetObject ( "LDAP: / / RootDSE»)
Si (Err.Number <> 0) Then
MsgBox "erreur de Liaison à l'objet RootDSE:" & Err.Number
Exit Sub
End If


sRoot = objRootDSE.Get ( "defaultNamingContext")

Bind pour le dossier Utilisateurs du domaine.
Set objUsers = GetObject ( "LDAP: / / CN = tcb," & objRootDSE. Get ( "defaultNamingContext"))
sOU1 = "tcb"
Set objUsers = GetObject ( "LDAP: / / OU =" & sOU1 & "," & sRoot)

Si (Err.Number <> 0) Then
MsgBox "LDAP: / / OU =" & sOU1 & "," & sRoot
MsgBox "erreur de Bind pour le dossier Utilisateurs du domaine.:" & Err.Number
Exit Sub
End If

Créer l'objet utilisateur.
Set objNewUser = objUsers.Create ( "user", "CN =" + strName)
Si (Err. Number <> 0) Then
MsgBox "Erreur de Création de l'objet utilisateur ..:" & Err.Number
Exit Sub
End If

Définissez la propriété sAMAccountName.
objNewUser.Put "sAMAccountName", strSAMAccountName
Si (Err.Number <> 0) Then
MsgBox "Erreur de Set sAMAccountName la propriété.:" & Err.Number
Exit Sub
End If


Comité du nouvel utilisateur.
objNewUser.SetInfo
Si (Err. Number <> 0) Then
MsgBox "erreur de s'engager, le nouvel utilisateur:" & Err.Number
Exit Sub
End If

Définir le mot de passe initial. Cela doit être effectué après
SetInfo est appelé parce que l'objet utilisateur doit
existent déjà sur le serveur.
objNewUser.SetPassword strInitialPassword
Si (Err.Number <> 0) Then
MsgBox "erreur de mot de passe initial Set:" & Err. Nombre
Exit Sub
End If

Définissez la propriété pwdLastSet à zéro, ce qui force les
utilisateur de changer leur mot de passe à la prochaine ouverture de session.
objNewUser.Put "pwdLastSet", 0
Si (Err.Number <> 0) Then
MsgBox "erreur de mot de passe initial Set:" & Err.Number
Exit Sub
End If

Pour activer le compte d'utilisateur, supprimez le
ADS_UF_ACCOUNTDISABLE drapeau de la userAccountControl
propriété. Aussi, supprimez la ADS_UF_PASSWD_NOTREQD et
ADS_UF_DONT_EXPIRE_PASSWD drapeaux de la
propriété userAccountControl.
userActCtrl = objNewUser.Get ( "userAccountControl")
userActCtrl = userActCtrl Et ADS_UF_DONT_EXPIRE_PASSWD Ou ADS_UF_PASSWD_CANT_CHANGE ou non (ADS_UF_ACCOUNTDISABLE)
objNewUser.Put "userAccountControl", userActCtrl
Si (Err.Number <> 0) Then
Exit Sub
End If

Comité de la mise à jour des propriétés.
objNewUser.SetInfo
End Sub & #91; code & #93; & #91; / code & #93;
  • Anonymous
  • Bot
  • No Avatar
  • Inscription: 25 Feb 2008
  • Messages: ?
  • Loc: Ozzuland
  • Status: Online

Message Juillet 5th, 2005, 2:15 am

  • grinch2171
  • Moderator
  • Genius
  • Avatar de l’utilisateur
  • Inscription: Fév 11, 2004
  • Messages: 6741
  • Loc: Martinsburg, WV
  • Status: Offline

Message Juillet 5th, 2005, 8:22 pm

J'ai trouvé ça TechNet pour la mise sans date d'expiration des mots de passe. Im pas beaucoup d'un scripteur donc il ne tient qu'à vous de savoir où la mettre.
Code: [ Select ]
Const ADS_UF_DONT_EXPIRE_PASSWD = &h10000

Set objUser = GetObject _
  ("LDAP://cn=myerken,ou=management,dc=fabrikam,dc=com")
intUAC = objUser.Get("userAccountControl")

If ADS_UF_DONT_EXPIRE_PASSWD AND intUAC Then
  Wscript.Echo "Already enabled"
Else
  objUser.Put "userAccountControl", intUAC XOR _
    ADS_UF_DONT_EXPIRE_PASSWD
  objUser.SetInfo
  WScript.Echo "Password never expires is now enabled"
End If
  1. Const ADS_UF_DONT_EXPIRE_PASSWD = &h10000
  2. Set objUser = GetObject _
  3.   ("LDAP://cn=myerken,ou=management,dc=fabrikam,dc=com")
  4. intUAC = objUser.Get("userAccountControl")
  5. If ADS_UF_DONT_EXPIRE_PASSWD AND intUAC Then
  6.   Wscript.Echo "Already enabled"
  7. Else
  8.   objUser.Put "userAccountControl", intUAC XOR _
  9.     ADS_UF_DONT_EXPIRE_PASSWD
  10.   objUser.SetInfo
  11.   WScript.Echo "Password never expires is now enabled"
  12. End If

Et pour ne pas changer les mots de passe.
Code: [ Select ]
Const ADS_ACETYPE_ACCESS_DENIED_OBJECT = &H6
Const ADS_ACEFLAG_OBJECT_TYPE_PRESENT = &H1
Const CHANGE_PASSWORD_GUID = "{ab721a53-1e2f-11d0-9819-00aa0040529b}"
Const ADS_RIGHT_DS_CONTROL_ACCESS = &H100

Set objUser = GetObject _
  ("LDAP://cn=myerken,ou=management,dc=fabrikam,dc=com")
Set objSD = objUser.Get("ntSecurityDescriptor")
Set objDACL = objSD.DiscretionaryAcl
arrTrustees = array("nt authority\self", "EVERYONE")

For Each strTrustee in arrTrustees
  Set objACE = CreateObject("AccessControlEntry")
  objACE.Trustee = strTrustee
  objACE.AceFlags = 0
  objACE.AceType = ADS_ACETYPE_ACCESS_DENIED_OBJECT
  objACE.Flags = ADS_ACEFLAG_OBJECT_TYPE_PRESENT
  objACE.ObjectType = CHANGE_PASSWORD_GUID
  objACE.AccessMask = ADS_RIGHT_DS_CONTROL_ACCESS
  objDACL.AddAce objACE
Next

objSD.DiscretionaryAcl = objDACL
objUser.Put "nTSecurityDescriptor", objSD
objUser. SetInfo
  1. Const ADS_ACETYPE_ACCESS_DENIED_OBJECT = &H6
  2. Const ADS_ACEFLAG_OBJECT_TYPE_PRESENT = &H1
  3. Const CHANGE_PASSWORD_GUID = "{ab721a53-1e2f-11d0-9819-00aa0040529b}"
  4. Const ADS_RIGHT_DS_CONTROL_ACCESS = &H100
  5. Set objUser = GetObject _
  6.   ("LDAP://cn=myerken,ou=management,dc=fabrikam,dc=com")
  7. Set objSD = objUser.Get("ntSecurityDescriptor")
  8. Set objDACL = objSD.DiscretionaryAcl
  9. arrTrustees = array("nt authority\self", "EVERYONE")
  10. For Each strTrustee in arrTrustees
  11.   Set objACE = CreateObject("AccessControlEntry")
  12.   objACE.Trustee = strTrustee
  13.   objACE.AceFlags = 0
  14.   objACE.AceType = ADS_ACETYPE_ACCESS_DENIED_OBJECT
  15.   objACE.Flags = ADS_ACEFLAG_OBJECT_TYPE_PRESENT
  16.   objACE.ObjectType = CHANGE_PASSWORD_GUID
  17.   objACE.AccessMask = ADS_RIGHT_DS_CONTROL_ACCESS
  18.   objDACL.AddAce objACE
  19. Next
  20. objSD.DiscretionaryAcl = objDACL
  21. objUser.Put "nTSecurityDescriptor", objSD
  22. objUser. SetInfo
‎"Be polite, be professional, but have a plan to kill everybody you meet." Maj. Gen. James Mattis
  • bigcheeez
  • Graduate
  • Graduate
  • No Avatar
  • Inscription: Mar 30, 2004
  • Messages: 243
  • Status: Offline

Message Juillet 5th, 2005, 9:53 pm

Qu'est-ce que les serveurs utilisez-vous?
  • igore
  • Born
  • Born
  • No Avatar
  • Inscription: Juil 05, 2005
  • Messages: 3
  • Status: Offline

Message Juillet 7th, 2005, 8:41 am

grinch2171 a écrit:
J'ai trouvé ça TechNet pour la mise sans date d'expiration des mots de passe. Im pas beaucoup d'un scripteur donc il ne tient qu'à vous de savoir où la mettre.
Code: [ Select ]
Const ADS_UF_DONT_EXPIRE_PASSWD = &h10000

Set objUser = GetObject _
  ("LDAP://cn=myerken,ou=management,dc=fabrikam,dc=com")
intUAC = objUser.Get("userAccountControl")

If ADS_UF_DONT_EXPIRE_PASSWD AND intUAC Then
  Wscript.Echo "Already enabled"
Else
  objUser.Put "userAccountControl", intUAC XOR _
    ADS_UF_DONT_EXPIRE_PASSWD
  objUser.SetInfo
  WScript.Echo "Password never expires is now enabled"
End If
  1. Const ADS_UF_DONT_EXPIRE_PASSWD = &h10000
  2. Set objUser = GetObject _
  3.   ("LDAP://cn=myerken,ou=management,dc=fabrikam,dc=com")
  4. intUAC = objUser.Get("userAccountControl")
  5. If ADS_UF_DONT_EXPIRE_PASSWD AND intUAC Then
  6.   Wscript.Echo "Already enabled"
  7. Else
  8.   objUser.Put "userAccountControl", intUAC XOR _
  9.     ADS_UF_DONT_EXPIRE_PASSWD
  10.   objUser.SetInfo
  11.   WScript.Echo "Password never expires is now enabled"
  12. End If

Et pour ne pas changer les mots de passe.
Code: [ Select ]
Const ADS_ACETYPE_ACCESS_DENIED_OBJECT = &H6
Const ADS_ACEFLAG_OBJECT_TYPE_PRESENT = &H1
Const CHANGE_PASSWORD_GUID = "{ab721a53-1e2f-11d0-9819-00aa0040529b}"
Const ADS_RIGHT_DS_CONTROL_ACCESS = &H100

Set objUser = GetObject _
  ("LDAP://cn=myerken,ou=management,dc=fabrikam,dc=com")
Set objSD = objUser.Get("ntSecurityDescriptor")
Set objDACL = objSD.DiscretionaryAcl
arrTrustees = array("nt authority\self", "EVERYONE")

For Each strTrustee in arrTrustees
  Set objACE = CreateObject("AccessControlEntry")
  objACE.Trustee = strTrustee
  objACE.AceFlags = 0
  objACE.AceType = ADS_ACETYPE_ACCESS_DENIED_OBJECT
  objACE.Flags = ADS_ACEFLAG_OBJECT_TYPE_PRESENT
  objACE.ObjectType = CHANGE_PASSWORD_GUID
  objACE.AccessMask = ADS_RIGHT_DS_CONTROL_ACCESS
  objDACL.AddAce objACE
Next

objSD.DiscretionaryAcl = objDACL
objUser.Put "nTSecurityDescriptor", objSD
objUser. SetInfo
  1. Const ADS_ACETYPE_ACCESS_DENIED_OBJECT = &H6
  2. Const ADS_ACEFLAG_OBJECT_TYPE_PRESENT = &H1
  3. Const CHANGE_PASSWORD_GUID = "{ab721a53-1e2f-11d0-9819-00aa0040529b}"
  4. Const ADS_RIGHT_DS_CONTROL_ACCESS = &H100
  5. Set objUser = GetObject _
  6.   ("LDAP://cn=myerken,ou=management,dc=fabrikam,dc=com")
  7. Set objSD = objUser.Get("ntSecurityDescriptor")
  8. Set objDACL = objSD.DiscretionaryAcl
  9. arrTrustees = array("nt authority\self", "EVERYONE")
  10. For Each strTrustee in arrTrustees
  11.   Set objACE = CreateObject("AccessControlEntry")
  12.   objACE.Trustee = strTrustee
  13.   objACE.AceFlags = 0
  14.   objACE.AceType = ADS_ACETYPE_ACCESS_DENIED_OBJECT
  15.   objACE.Flags = ADS_ACEFLAG_OBJECT_TYPE_PRESENT
  16.   objACE.ObjectType = CHANGE_PASSWORD_GUID
  17.   objACE.AccessMask = ADS_RIGHT_DS_CONTROL_ACCESS
  18.   objDACL.AddAce objACE
  19. Next
  20. objSD.DiscretionaryAcl = objDACL
  21. objUser.Put "nTSecurityDescriptor", objSD
  22. objUser. SetInfo





Merci! Il est fonctionne vraiment
Système d'exploitation Windows 2000 Server
  • grinch2171
  • Moderator
  • Genius
  • Avatar de l’utilisateur
  • Inscription: Fév 11, 2004
  • Messages: 6741
  • Loc: Martinsburg, WV
  • Status: Offline

Message Juillet 7th, 2005, 9:35 am

Glad a aidé à vous. :D
‎"Be polite, be professional, but have a plan to kill everybody you meet." Maj. Gen. James Mattis
  • pelele
  • Born
  • Born
  • No Avatar
  • Inscription: Sep 21, 2011
  • Messages: 1
  • Status: Offline

Message Septembre 21st, 2011, 2:27 am

Comment est-ce que nous pourrions faire ce même processus par lots (batch) importatrice utilisateurs provenant d'un fichier csv ?

En d'autres termes, prendre tous les utilisateurs d'un fichier csv et exécutez ce code pour chaque utilisateur afin que les mots de passe jamais expirent.

Code: [ Select ]
  Const ADS_UF_DONT_EXPIRE_PASSWD = &h10000
  Set objUser = GetObject _
   ("LDAP://cn=myerken,ou=management,dc=fabrikam,dc=com")
  intUAC = objUser.Get("userAccountControl")
  If ADS_UF_DONT_EXPIRE_PASSWD AND intUAC Then
   Wscript.Echo "Already enabled"
  Else
   objUser.Put "userAccountControl", intUAC XOR _
    ADS_UF_DONT_EXPIRE_PASSWD
   objUser.SetInfo
   WScript.Echo "Password never expires is now enabled"
  End If
  1.   Const ADS_UF_DONT_EXPIRE_PASSWD = &h10000
  2.   Set objUser = GetObject _
  3.    ("LDAP://cn=myerken,ou=management,dc=fabrikam,dc=com")
  4.   intUAC = objUser.Get("userAccountControl")
  5.   If ADS_UF_DONT_EXPIRE_PASSWD AND intUAC Then
  6.    Wscript.Echo "Already enabled"
  7.   Else
  8.    objUser.Put "userAccountControl", intUAC XOR _
  9.     ADS_UF_DONT_EXPIRE_PASSWD
  10.    objUser.SetInfo
  11.    WScript.Echo "Password never expires is now enabled"
  12.   End If

Afficher de l'information

  • Total des messages de ce sujet: 6 messages
  • Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 169 invités
  • Vous ne pouvez pas poster de nouveaux sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas éditer vos messages
  • Vous ne pouvez pas supprimer vos messages
  • Vous ne pouvez pas joindre des fichiers
 
 

© 2011 Unmelted, LLC. Ozzu® est une marque déposée de Unmelted, LLC