Anuncios

Bienvenidos sean a este post, hoy nos centraremos mas en ver algunas propiedades adicionales donde podemos escribir informacion, esto les sera util para poder almacenar informacion de los usuarios, ya sea la que corresponde como otra mas de tipo administrativo como guardar las modificaciones que se realizaron, veamos la tabla de propiedades y el campo que pertenece:

PropiedadCampo del usuario
sAMAccountNameUser logon name (pre windows 2000)
UserPrincipalName User logon name
givenNameNombre en pestaña General
snApellido en pestaña General
DisplayNameDisplay Name en pestaña General
physicalDeliveryOfficeNameOffice en pestaña General
telephoneNumberTelephone Number en pestaña General
homephoneHome en pestaña Telephones
streetAddressStreet en pestaña Address
lCity en pestaña Address
titleTitle en pestaña Organization
postalCodeZIP/Postal Code en pestaña Address
pagerPager en pestaña Telephones
infoNotes en pestaña Telephones
scriptpathLogon script en pestaña Profile
wwwhomepageWeb Page en pestaña General
postofficeboxP.O Box en pestaña Address
mailMail en pestaña General
facsimileTelephoneNumberFax en pestaña Telephones
mobileMobile en pestaña Telephones
ipphoneIP Phone en pestaña Telephones
cCountry en pestaña Address
departmentDepartment en pestaña Organization
companyCompany en pestaña Organization
distinguishedNameNos devuelve el path y el domino del usuario en cuestion
Anuncios

Estos son algunos, o por lo menos los que mas pueden utilizar para dejar una informacion adicional sobre el usuario, pueden usarla desde informacion como el DNI, RUT o como sea la identtificacion en tu pais, hasta el numero del pedido (o ticket) con el que fue solicitado la alta, una modificacion o la baja, en fin queda a vuestra imaginacion para que les puede ser util esta informacion, por otro lado en todos nuestros casos trabajamos sobre el contenedor predeterminado del AD pero que sucede cuando debemos trabajar sobre otro o crear nuestro usuario sobre un OU (Unidad Organizacional por sus siglas en ingles) diferente veamos el siguiente caso

Nota: Los campos anteriormente mostrados tambien permiten obtener la informacion almacenada.
Anuncios

En este caso tenemos una OU por fuera del predeterminado donde estara la compañia, por un lado los usuarios, por otro las PCs, por otro las Notebooks, por otro los grupos y uno para los Servidores, a su vez dentro de Usuarios tendremos el Pais (Argentina) y la oficina (IT), vamos a suponer que tenemos un usuario, si miramos dentro de sus propiedades y en la pestaña Object, en la opcion de Canonical Name veriamos esto:

laboratorio.local/Tinchicus/Usuarios/Argentina/IT/Apellido1, Nombre1

En este caso la ubicacion de nuestro objeto en realidad seria esta:

laboratorio.local/Tinchicus/Usuarios/Argentina/IT
Anuncios

Pero con este formato no podremos usarlo en nuestro scripts porque nos devolveria un error, la unica opcion es convertirlo a un formato valido para ello deberan leerlo de derecha a izquierda y convertirlo de esta forma:

ou=IT,ou=Argentina,ou=Usuarios,ou=Tinchicus,dc=laboratorio,dc=local
Anuncios

Se ve complicado pero no lo es, si comprenden el patron podran transformar cualquier ou en un formato valido, vamos a tomar el script de creacion de usuarios (no masivo) y lo vamos a modificar de la siguiente forma:

Const ADS_PROPERTY_APPEND = 3
Const ADS_PORPERTY_UPDATE = 2
Const Dominio = "dc=laboratorio,dc=local"
Const udominio = "laboratorio.local"
Const titulo = "Alta de usuario v. 1.0"

Dim objFSOut, objStreamout, fileout,textolog

cuenta = inputbox("Ingresa la cuenta",titulo)
nombre = inputbox("Ingresa el nombre",titulo)
apellido = inputbox("Ingresa el apellido",titulo)
uDisplay = apellido & ", " & nombre

chequeo = FindUser(cuenta,uDisplay,ucase(Dominio))

if (chequeo="Not Found") then
empresa = inputbox("Ingresa la empresa",titulo)
descrip = inputbox("Ingresa la descripcion",titulo)
pais = inputbox("Ingresa el pais",titulo)
departamento = inputbox("Ingresa el departamento",titulo)
ou = inputbox("Ingresa la ubicacion del objeto (ou)",titulo)

if (ou="") then ou="cn=Users"

Set oRootLDAP = GetObject("LDAP://rootDSE")
Set oContenedor = GetObject("LDAP://" & ou & "," & Dominio)
Set oNuevoUsuario = oContenedor.Create("User","cn=" & chr(34) & uDisplay & chr(34))

oNuevoUsuario.put "sAMAccountName", lcase(cuenta)
oNuevoUsuario.put "givenName", nombre
oNuevoUsuario.put "sn", apellido
oNuevoUsuario.put "UserPrincipalName", lcase(cuenta) & "@" & uDominio
oNuevoUsuario.put "cn", uDisplay
oNuevoUsuario.put "DisplayName", uDisplay
oNuevoUsuario.put "company", empresa
oNuevoUsuario.put "c", pais
oNuevoUsuario.put "department", departamento
oNuevoUsuario.put "Description", descrip

oNuevoUsuario.SetInfo


randomize timer

dim texto

do while a<12
	if (a=0) then 

	caracter = int(rnd * 25) + 65
	texto = chr(caracter)
	a = a + 1

	else
	
	caracter = int(rnd * 122) + 1
	if ((caracter>47 and caracter<58) or (caracter>96 and caracter<123)) then
		texto = texto & chr(caracter)
		a = a + 1
	end if

	end if		 
loop

uPassword = texto

'msgbox uPassword

oNuevoUsuario.SetPassword uPassword
oNuevoUsuario.Put "pwdLastSet", 0

oNuevoUsuario.put "userAccountControl", 544
oNuevoUsuario.SetInfo

fileout = cuenta & ".log"

textolog = "Se creo la cuenta: " & cuenta & vbCrLf
textolog = textolog & "El nombre completo: " & uDisplay & vbCrLf
textolog = textolog & "La contraseña es: " & uPassword

Set objFSOut = CreateObject("Scripting.FileSystemObject")
Set objStreamout = objFSOut.CreateTextFile(fileout, 1, false)

objStreamout.Write textolog

objStreamout.close()
Set objStreamout = nothing
Set objFSOut = nothing

msgbox "Se creo el usuario correctamente"

else

msgbox "Se encontro el siguiente objeto: " & chequeo,,titulo

end if

Function FindUser(Byval UserName, ByVal CanonName, Byval Domain)


	set cn = createobject("ADODB.Connection")
	set cmd = createobject("ADODB.Command")
	set rs = createobject("ADODB.Recordset")
	cn.open "Provider=ADsDSOObject;"

	cmd.activeconnection=cn
	cmd.commandtext="SELECT ADsPath FROM 'GC://" & Domain & _
	   "' WHERE sAMAccountName = '" & UserName & "'"

	set rs = cmd.execute
	if err<>0 then
		 FindUser="Error conectandose a la base del AD:" & err.description
	else
		 if not rs.BOF and not rs.EOF then
			FindUser=UserName
		 else
			cmd.commandtext="SELECT ADsPath FROM 'GC://" & Domain & _
			"' WHERE cn = '" & CanonName & "'"

			set rs = cmd.execute
			if not rs.BOF and not rs.EOF then
				FindUser=CanonName
		 	else
				FindUser = "Not Found"
			end if
	 	end if
	end if
	cn.close
end function 
Anuncios

El codigo es exactamente el mismo al que estudiamos en su momento en este post pero la unica diferencia va a estar en estas dos partes:

ou = inputbox("Ingresa la ubicacion del objeto (ou)",titulo)

if (ou="") then ou="cn=Users"
Anuncios

Donde pediremos que ingresando la direccion completa tal como indicamos antes pero sin el dominio (dc=laboratorio, dc=local) porque este dato lo tenemos en Dominio, en caso de que no lo pasemos porque lo dejamos en blanco le asignara a ou el valor de “cn=Users” para que no genere error, nuestra siguiente modificacion sera esta:

Set oContenedor = GetObject("LDAP://" & ou & "," & Dominio)

Donde en lugar de usar cn=Users directamente usaremos el valor de ou adicionado con el dominio, si lo probamos se vera algo asi:

Despues creara el usuario como siempre pero la ubicacion que le informamos, esto es util para cuando necesitamos organizar nuestros objetos dentro del AD, especialmente cuando son empresas muy grandes con distintas sucursales ya sean en el interior de un pais como en el exterior, en fin espero que esto les sea de utilidad.

Anuncios

En resumen, hoy hemos visto cuales son las propiedades que podemos modificar y tener informacion visualmente a mano, tanto sea para almacenar informacion como para auditorias, tambien hemos visto como trabajar con las OU para organizar nuestra informacion dentro del AD, espero les haya sido util sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios

Tengo un Patreon donde podes acceder de manera exclusiva a material para este blog antes de ser publicado, sigue los pasos del link para saber como.

Tambien podes comprar mi libro sobre VBscript en Amazon

Tambien podes donar

Es para mantenimiento del sitio, gracias!

$1.00