Möchte man die Personalnummern der Mitarbeiter in die Benutzerverwaltung mit eingeben, so kommt man unter Umständen auf den Gedanken,
dass Schema erweitern zu müssen da kein entsprechendes Feld für die Eingabe existiert.


Dabei existieren im Schema des Active Directory`s bereits zwei Attribute, nämlich Employee-ID sowie Employee-Number.
Deshalb ist es nicht nötig das Schema zu erweitern. Diese tauchen lediglich nicht in Form eines Feldes in einer MMC auf und genau das ist das Problem.




Was sich recht kompliziert bei dem erstellen eines Eingabe-Feldes in den bestehenden MMCs (z.B. im Snap-In Active Directory-Benutzer und
-Computer) darstellt, lässt sich verhältnismäßig einfach über das Kontextmenü eines Benutzerobjekts durchführen.


 


In diesem Beispeil, wird das Skript von Sakari Kouti verwendet:




  1. Zuerst gilt es mit ADSIEdit das user-Display Objekt das sich in der Konfigurationspartition befindet (CN=user-
    Display,CN=407,CN=DisplaySpecifiers,CN=Configuration,DC=<Domäne>,DC=<TLD>) aufzurufen.


  2. Dort muss im Attribut adminContextMenu ein neuer Eintrag hinzugefügt werden:
    <2, Personalnummer, C:\Skripte\employeeid.vbs> allerdings ohne die Klammern.

    Der Eintrag bedeutet:
    2 = Standardmäßig existiert bereits ein Eintrag der mit „1“ anfängt. Falls mehrere Einträge existieren sollten,
    gilt es die nächste freie Zahl zu wählen.
    Personalnummer = Dieser Eintrag wird im Kontextmenü des Benutzerobjekts angezeigt.
    C:\Skripte\employeeid.vbs = In diesem angegebenen Pfad muss sich das Skript befinden.


  3. Anschließend gilt es das Skript im angegebenen Verzeichnis zu speichern (mit der Endung VBS).

    ‘ ————————————————————————-
    ‘ 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( _
        “Die aktuelle Personalnummer lautet “ & strCurrentID & vbCrLf & _
        vbCrLf & _
        “Tragen Sie bitte die neue Personalnummer ein (1 bis “ & intMaxLen & ” Zeichen)”, _
        Right(objUser.Name, Len(objUser.Name) - 3) & ” Personalnummer”, _
        objUser.employeeID)

    If strEmployeeID = “” Then WScript.Quit ‘User clicked Cancel

    If Len(strEmployeeID) > intMaxLen Then
        MsgBox “Die neue Personalnummer ist zu lang und wird somit nicht gespeichert.”, _
            vbCritical, “Fehler”
    Else
        Err.Clear
        objUser.employeeID = strEmployeeID
        objUser.SetInfo
        If Err Then MsgBox “Die neue Personalnummer wird nicht gespeichert.”, _
            vbCritical, “Fehler”
    End If




  4. Wenn man nun mit einem Rechtsklick auf einem Benutzerobjekt das Kontextmenü aufruft,
    erscheint ein weiterer Eintrag der lautet: Personalnummer.


Als Alternative kann die Personalnummer auch als Spalte in der MMC Active Directory-Benutzer und -Computer angezeigt werden.
Wie das funktioniert, zeigt der folgende Artikel:

Eigene Spalten in ADBuC integrieren


 


An dieser Stelle sei erwähnt, man sollte das Active Directory nicht mit einer Human-Ressourcen Datenbank verwechseln.
Das Active Directory ist in erster Linie dafür da, IT-Informationen für die Netzwerkverwaltung bereitzustellen.


 


Weitere Informationen:
Extending the User Interface for Directory Objects

Comments are closed, but trackbacks and pingbacks are open.