Agregar campo EmployeeID a usuarios

Posted on 30/07/2008

0


Aunque es un truco que ya tiene varios años de antigüedad, no es muy conocido y aprovechado.

Si observamos con el complemento (snap-in) el Esquema (Schema) podremos ver varias cosas interesantes. Para nombrar solamente una, un objeto de clase usuario tiene muchos más atributos que los que nos muestra la aplicación Usuarios y Equipos de Active Directory (Active Directory Users and Computers).

Un atributo que puede ser útil en muchas empresas es poder disponer en Active Directory de un "Identificador de Empleado" llamado también en algunos casos como "Número de Legajo". Para esto podemos usar el atributo EmployeeID que ya está presente, sólo que no es mostrado.

El procedimiento es simple, sólo necesitaremos tener instaladas las Support Tools correspondientes al sistema operativo y service pack que tiene el controlador de dominio, alcanza con hacer una búsqueda en www.microsoft.com/downloads y luego instalarlo.

Creamos una MMC cargando el complemento ADSIEdit, y vamos a user-Display object (en CN=409, CN=DisplaySpecifiers, CN=Configuration). Con botón derecho elegimos propiedades y agregamos "2, Employee &ID, c:\windows\system32\employeeid.vbs" (Sin comillas). Es importante no remover entradas existentes, o si el número 2 ya estuviera, elegir el siguiente valor libre.

Lo que nos falta ahora es poner el script EmployeeID.vbs en c:\windows\system32

Acá transcribo un script que funciona:

____________

‘ ————————————————————————-
‘       Script by Sakari Kouti (see http://www.kouti.com)
‘ You have a royalty-free right to use, modify, reproduce and distribute
‘ this script (and/or any modified version) in any way you find useful,
‘ provided that you agree that Addison-Wesley or Sakari Kouti has no
‘ warranty, obligations or liability for the script. If you modify
‘ the script, you must retain this copyright notice.
‘ ————————————————————————-
Option Explicit
Dim wshArguments, objUser, objSchemaEmployeeID, strCurrentID, strEmployeeID, intMaxLen

On Error Resume Next

Set wshArguments = WScript.Arguments
Set objUser = GetObject(wshArguments(0))
Set objSchemaEmployeeID = GetObject("LDAP://schema/employeeID")

intMaxLen = objSchemaEmployeeID.MaxRange

If objUser.employeeID <> "" Then
    strCurrentID = objUser.employeeID
Else
    strCurrentID = "empty"
End If

strEmployeeID = InputBox( _
    "The current Employee ID is " & strCurrentID & vbCrLf & _
    vbCrLf & _
    "Enter the new Employee ID (1 through " & intMaxLen & " chars)", _
    Right(objUser.Name, Len(objUser.Name) – 3) & " Employee ID", _
    objUser.employeeID)

If strEmployeeID = "" Then WScript.Quit   ‘User clicked Cancel

If Len(strEmployeeID) > intMaxLen Then
    MsgBox "The new Employee ID was too long and it was not saved.", _
        vbCritical, "Error Occurred"
Else
    Err.Clear
    objUser.employeeID = strEmployeeID
    objUser.SetInfo
    If Err Then MsgBox "The new Employee ID was not saved.", _
        vbCritical, "Error Occurred"
End If

____________

 

Solamente queda ir a Usuarios y Equipos de Active Directory (Active Directory Users and Computers) y hacer botón derecho sobre un usuario.

Una de las cosas que hace más interesante todavía esto, es que entrando en las opciones de búsqueda avanzada de Active Directory se puede buscar por este campo.

Posted in: Active Directory