Pozn.: Toto řešení není žádná novinka a na internetu naleznete řadu anglických návodů, já jsem pouze dodal českou verzi.
Adresář Active Directory obsahuje celou řadu atributů, některé byly přidány od verze Windows Server 2003. AD je kompatibilní s LDAP adresářem a proto obsahuje různé atributy definované pro LDAP, které však standardně nevyužívá. Pomocí Snap-In do MMC konzole Active Directory Users And Computers (dále jen ADUC) můžeme zobrazovat a editovat pouze některé atributy.
Pro přístup ke všem atributům můžeme využít nějaký nástroj (třeba ldp.exe
) či programovací jazyk, které využívá protokolu LDAP. Nebo můžeme použít MS nástroj ADSIEdit, který se nachází ve Windows Server 2000/2003 Support Tools (například Windows Server 2003 Service Pack 2 32-bit Support Tools).
Komponentu ADUC však můžeme sami upravovat a rozšiřovat. Jednou možností je úprava knihovny, příkladem je Additional Account Info přímo od MS (součást Windows 2003 Server Resource Kit, musí se zaregistrovat knihovna - regsvr32 acctinfo.dll
), ale to není tak jednoduché. Druhou možností je využití Visual Basic skriptu, který spustíme z kontextového menu ADUC.
Následující příklad ukazuje, jak vytvořit skript pro zobrazení a editaci atributu employeeID
(zaměstnanecké číslo). A jak rozšířit kontextové menu objektu User
, aby se mohl spouštět tento skript.
Vytvoření skriptu pro atribut employeeID
Nejprve musíme vytvořit jednoduchý VB skript, který bude dělat veškerou práci se čtením, zobrazováním a zapisováním hodnot z AD. Toto je pouze jednodušší příklad, který by se mohl rozšířit a doplnit o nějaké kontroly.
Set wshArgs = Wscript.Arguments Set objAD = GetObject(wshArgs(0)) eID = objAD.employeeID if eID = "" then eID = "prázdné" res = InputBox("Osoba: " & objAD.cn & vbCrLf & vbCrLf & "Současné osobní číslo: " & eID & vbCrLf & vbCrLf & "Zadejte nové osobní číslo:", objAD.cn & " osobní číslo", objAD.employeeID) if res <> "" then Err.Clear objAD.EmployeeID = res objAD.setinfo if Err Then MsgBox "Osobní číslo se nepodařilo uložit.", vbCritical, "Chyba !!!" end if
Tento skript uložíme například jako employeeID.vbs a umístíme jej na místo, kde bude přístupný všem, kteří jej budou potřebovat. Úprava kontextového menu se aplikuje na doménu, takže odkudkoliv někdo přistoupí pomocí ADUC na tuto hodnotu, musí mít přístup ke skriptu. Vhodným místem pro uložení skriptu je adresář NETLOGON
na doménovém kontroleru.
Přidání položky do kontextového menu
- spustíme ADSIEdit.msc s potřebnými právy (Domain Admin či Enterprise Admin podle struktury)
- otevřeme Configuration, dále naši doménu a CN=DisplaySpecifiers
- podle jazyka vybereme další složku, CN=409 pro angličtinu, CN=405 pro češtinu
- zde nalezneme položku CN=user-Display a dvojitým kliknutím otevřeme
(takže celé DN záznamu jeCN=user-Display,CN=409,CN=DisplaySpecifiers,CN=Configuration,DC=domena,DC=tld
) - první atribut v seznamu by měl být adminContextMenu, otevřeme jej dvojitým kliknutím
- nyní vytvoříme položku do kontextového menu uživatele, první hodnotu zadáme některé volné číslo, druhá je název položky v kontextovém menu a poslední cesta ke skriptu, který se spustí
Př:6,&Osobní číslo,\\domain-server\netlogon\employeeID.vbs
Zajímavé odkazy
- Step-by-Step Guide to Using Active Directory Schema and Display Specifiers - popis problematiky od MS
- Scripts and Files of the Inside Active Directory - řady VB skriptů pro inspiraci
- Scripts to manage Active Directory Users - další VB skripty
- VBScript Fundamentals for Windows Scripting - ADSI - popis psaní VB skriptů pro ADSI
Zatím zde nejsou žádné komentáře.