Avalados por :

Cómo devolver todos los empleados desde Active Directory usando un campo AD personalizado ID de empleado

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 5 Vistas
0
Cargando...

Tenemos un campo AD personalizado llamado "ID de empleado".

Está poblado con (¡sorpresa!) todos los números de identificación de empleados. Todos comienzan con "99."

Cuando configuro una conexión OLE / Active Directory y escribo este comando:

SELECT eMPLOYEEid, SN, GIVENNAME, MAIL, DEPARTMENT, MODIFYTIMESTAMP FROM 'LDAP://dc=mydomain,dc=k12,dc=ga,dc=us' where employeeID = '99*'

Crystal devuelve exactamente 1000 registros.

No todos mis empleados están allí.

¿Qué debo cambiar para habilitar la devolución de TODOS mis empleados desde Active Directory?

Gracias

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

3 Respuestas

0
Cargando...

Patrick,

Tuve que usar VBScript para escribir un archivo csv y obtener la información de todos... No soy un experto en VBScript, pero un compañero de trabajo tenía un script que pude modificar para mis necesidades:

Const ADS_SCOPE_SUBTREE = 2

Set objFSO = CreateObject("Scripting.FileSystemObject")

objFSO.CreateTextFile("UserFile.csv")

Set objFile = objFSO.OpenTextFile("UserFile.csv", 2)

Set objConnection = CreateObject("ADODB.Connection")

Set objCommand = CreateObject("ADODB.Command")

objConnection.Provider = "ADsDSOObject"

objConnection.Open "Active Directory Provider"

Set objCommand.ActiveConnection = objConnection

objCommand.CommandText = "Select EmployeeID, mail from 'LDAP://DC=whatever,DC=us'" & _

" where objectCategory='person' and objectClass='user' and employeeID = ' 99 '"

objCommand.Properties("Page Size") = 10

objCommand.Properties("Timeout") = 30

objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE

objCommand.Properties("Cache Results") = False

Set objRecordSet = objCommand.Execute

objRecordSet.MoveFirst

objFile.WriteLine("EmployeeID,Email")

Do Until objRecordset.EOF

If Not IsNull(objRecordset.Fields("mail").Value) Then

iRec = iRec + 1

objfile.write (objRecordset.Fields("EmployeeID") & ", ")

If InStr(objRecordset.Fields("mail"), "@") = 0 Then

objfile.write (", ")

Else: objfile.write (LCase(Left(objRecordset.Fields("mail"), InStr(objRecordset.Fields("mail"), "@") - 1)) & ", ")

End If

objfile.WriteLine ("")

End If

objRecordset.MoveNext

Loop

objFile.Close

msgbox "¡HECHO!"

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Martha,

Me gustaría saber también. No he encontrado la consulta correcta para extraer más de 1000 registros.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Gracias por publicar tu solución

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?