Möchte man die Personalnummern der Mitarbeiter in die Benutzerverwaltung mit eingeben, so kommt man unter Umständen auf den Gedanken, Dabei existieren im Schema des Active Directory`s bereits zwei Attribute, nämlich Employee-ID sowie Employee-Number.
dass Schema erweitern zu müssen da kein entsprechendes Feld für die Eingabe existiert.
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:
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.
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.
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
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.