Creación de nuevos usuarios en Active Directory de VBScript

  • igore
  • Born
  • Born
  • No Avatar
  • Registrado: Jul 05, 2005
  • Mensajes: 3
  • Status: Offline

Nota Julio 5th, 2005, 2:15 am

Puedo crear usuarios, pero tengo problemas para configurar las propiedades.

Quiero crear el usuario de este propiedades:

CANT usuario cambiar la contraseña
Contraseña nuevos caducado

Yo uso este script. Este script crea el usuario pero atributo USUARIO CANT cambiar la contraseña no se puede instalar:

[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 "llamando a la sub"
createuser llamada ( "name1", "n1", "123456")


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

El error de reanudar el próximo

Se unen a la rootDSE objeto.
Set objRootDSE = GetObject ( "LDAP: / / rootDSE")
Si (Err.Number <> 0) Entonces
msgbox "error de Bind para el objeto rootDSE:" & Err.Number
Exit Sub
Fin Si


sRoot = objRootDSE.Get ( "defaultNamingContext")

Se unen a la carpeta Usuarios en el dominio.
Set objUsers = GetObject ( "LDAP: / / CN = TCB," & objRootDSE. Get ( "defaultNamingContext"))
sOU1 = "TCB"
Set objUsers = GetObject ( "LDAP: / / OU =" sOU1 & & "," & sRoot)

Si (Err.Number <> 0) Entonces
msgbox "LDAP: / / OU =" sOU1 & & "," & sRoot
msgbox "error de unirse a la carpeta Usuarios en el dominio.:" & Err.Number
Exit Sub
Fin Si

Cree el objeto de usuario.
Set objNewUser = objUsers.Create ( "user", "CN =" + strName)
Si (Err. Número <> 0) Entonces
msgbox "error del usuario Crear el objeto ..:" & Err.Number
Exit Sub
Fin Si

Establezca la propiedad sAMAccountName.
objNewUser.Put "sAMAccountName", strSAMAccountName
Si (Err.Number <> 0) Entonces
msgbox "error de Set sAMAccountName la propiedad.:" & Err.Number
Exit Sub
Fin Si


Compro el nuevo usuario.
objNewUser.SetInfo
Si (Err. Número <> 0) Entonces
msgbox "error de Compro el nuevo usuario:" & Err.Number
Exit Sub
Fin Si

Establezca la contraseña inicial. Esto debe realizarse después de
SetInfo se llama porque el usuario debe oponerse
ya existe en el servidor.
objNewUser.SetPassword strInitialPassword
Si (Err.Number <> 0) Entonces
msgbox "error de Set la contraseña inicial:" & Err. Número
Exit Sub
Fin Si

Establezca la propiedad pwdLastSet a cero, lo que obliga al
usuario cambiar su contraseña en el próximo conecta a la red.
objNewUser.Put "pwdLastSet", 0
Si (Err.Number <> 0) Entonces
msgbox "error de Set la contraseña inicial:" & Err.Number
Exit Sub
Fin Si

Para habilitar la cuenta de usuario, eliminar las
ADS_UF_ACCOUNTDISABLE bandera de la userAccountControl
propiedad. Asimismo, eliminar la ADS_UF_PASSWD_NOTREQD y
ADS_UF_DONT_EXPIRE_PASSWD banderas de la
userAccountControl propiedad.
userActCtrl = objNewUser.Get ( "userAccountControl")
userActCtrl = userActCtrl Y ADS_UF_DONT_EXPIRE_PASSWD O ADS_UF_PASSWD_CANT_CHANGE o no (ADS_UF_ACCOUNTDISABLE)
objNewUser.Put "userAccountControl", userActCtrl
Si (Err.Number <> 0) Entonces
Exit Sub
Fin Si

Compro la versión actualizada de propiedades.
objNewUser.SetInfo
& End Sub #91; código & #93; & #91; / code & #93;
  • Anonymous
  • Bot
  • No Avatar
  • Registrado: 25 Feb 2008
  • Mensajes: ?
  • Loc: Ozzuland
  • Status: Online

Nota Julio 5th, 2005, 2:15 am

  • grinch2171
  • Moderator
  • Genius
  • Avatar de Usuario
  • Registrado: Feb 11, 2004
  • Mensajes: 6744
  • Loc: Martinsburg, WV
  • Status: Offline

Nota Julio 5th, 2005, 8:22 pm

Esto me lo dio para el establecimiento de TechNet no caducan las contraseñas. Im no mucho de un programador por lo que depende de usted para saber dónde ponerla.
Código: [ 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

Y para no cambiar las contraseñas.
Código: [ 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
  • Registrado: Mar 30, 2004
  • Mensajes: 243
  • Status: Offline

Nota Julio 5th, 2005, 9:53 pm

¿Qué os servidor está usando?
  • igore
  • Born
  • Born
  • No Avatar
  • Registrado: Jul 05, 2005
  • Mensajes: 3
  • Status: Offline

Nota Julio 7th, 2005, 8:41 am

grinch2171 escribió:
Esto me lo dio para el establecimiento de TechNet no caducan las contraseñas. Im no mucho de un programador por lo que depende de usted para saber dónde ponerla.
Código: [ 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

Y para no cambiar las contraseñas.
Código: [ 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





Gracias! Es realmente funciona
Sistema operativo Windows 2000 Server
  • grinch2171
  • Moderator
  • Genius
  • Avatar de Usuario
  • Registrado: Feb 11, 2004
  • Mensajes: 6744
  • Loc: Martinsburg, WV
  • Status: Offline

Nota Julio 7th, 2005, 9:35 am

Estamos encantados de que usted ayudó a cabo. :D
‎"Be polite, be professional, but have a plan to kill everybody you meet." Maj. Gen. James Mattis
  • pelele
  • Born
  • Born
  • No Avatar
  • Registrado: Sep 21, 2011
  • Mensajes: 1
  • Status: Offline

Nota Septiembre 21st, 2011, 2:27 am

¿Cómo podríamos hacer este mismo proceso por lotes (batch) Importar usuarios desde un archivo csv?

En otras palabras, tomar todos los usuarios de un archivo csv y ejecutar este código para cada usuario para que la contraseña nunca caduque.

Código: [ 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

Publicar Información

  • Total de mensajes en este tema: 6 mensajes
  • Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 128 invitados
  • No puede abrir nuevos temas en este Foro
  • No puede responder a temas en este Foro
  • No puede editar sus mensajes en este Foro
  • No puede borrar sus mensajes en este Foro
  • No puede enviar adjuntos en este Foro
 
 

© 2011 Unmelted, LLC. Ozzu® es una marca registrada de Unmelted, LLC