Active Directory Users and Computers konsolunda yer alan tüm nesnelerin özellikleri Schema içerisinde yer almaktadır. Forest kurulduğundan bu nesne özellikleri de otomatik olarak oluşturulmaktadır. Bu özelliklere attribute ismi verilmektedir. Kullanıcı nesnesinin adı, soyadı, hesap ismi, son oturum açma tarihi gibi birçok özellikte bu attribute larda yer alır.
Hazır gelen attributelerden extensionAttribute ler ise istediğimiz bilgileri girmemizi sağlar. Yaklaşık 15 adet extensionAttribute vardır. Bunlara hazır gelen bilgilerden farklı bilgiler girebiliriz. Örneğin TC kimlik numarası.
İstersek kendimizde attribute oluşturup Active Directory yapısında kullanabiliriz. Bu makalede TC kimlik numarası isimli bir attribute oluşturacağız ve kullanıcılarımıza bu atrribute u atayacağız. Kullanımını kolaylaştırmak içinde birtakım ayarlar yapacağız.
Önemli notlar:
- Bu uygulamayı yapmadan önce mutlaka bir test yapısında deneyiniz.
- Uygulamaya başlamadan önce DC lerinizin yedeğini mutlaka alın.
- Oluşturulan attribute leri silmek zordur. Haberiniz olsun. Yanlış olursa sıkıntı yaşayabilirsiniz.
Atrribute lerin ayarları görmek ve yenisini oluşturmak için Active Directory Schema konsoluna ihtiyacımız var. Bu konsol ise varsayılan olarak görünüz halde değildir.
DC makinemizden schema master yüklü olana bağlanıyoruz ve çalıştıra “regsvr32 schmmgmt.dll” yazarak konsolu görünür hale getiriyoruz.
MMC konsolunu açarak schema master konsolunu ekliyoruz.
Active Directory Schema altında iki menü yer almaktadır. Classes ve Attributes.
Attributes bölümünden TC kimlik numaraları için yeni bir attribute tanımlayacağız. Fakat bunu tek başına kullanamayız. Mutlaka bir classes a atamak zorundayız.
Öncelikle yeni bir attributes oluşturuyoruz.
Önemli notlarda üçüncü sırada belirttiğim uyarı gelmektedir. Bir kez oluşturulan pasif edilebiliyor ama silinemiyor. Sadece üzerine yazma şansınız var. Dikkatli olun.
Common name ve LDAP display name e TCkimlik yazıyoruz. Bu görünür isim olmayacaktır. Sadece attribute un ismidir. Bu ismi daha sonra birçok ayarda ve script içerisinde kullanacağız. Bir yere not edebilirsiniz. Kesinlikle Türkçe karakter kullanmayınız.
Unique ID ise gireceğiniz değer ile ilgilidir. Eğer TC kimlik numarası gibi uzun bir string girecekseniz 1.2.840.113556.1.4.7000.142 değerini kullanabilirsiniz. Bir integer değer için 1.2.840.113556.1.4.7000.141 kullanılabilir.
Son olarak da syntax ı belirliyoruz. Burası önemli bir alandır. Nasıl değer gireceğimizi burada belirliyoruz. Tc kimlik numarası gibi uzun bir sayı için Case Insensitive String kullanılabilir. Menu de farklı ihtiyaçlar için bir çok syntax yer almaktadır.
Yeni attribute u oluşturuyoruz.
Sıra geldi class tanımlamaya. Kullanıcılara ya da farklı nesnelere özellik atamamızı class lar sağlar.
Yeni class oluşturuyoruz.
KullanıcıBilgileri ismini veriyoruz ve gene Türkçe karakter kullanmıyoruz.
Id olarak 1.2.840.113556.1.4.7000.17 verebiliriz.
Class türü ise “Auxiliary” olmalıdır.
Bir sonraki ekranda yeni oluşturduğumuz attribute u seçiyoruz.
Class ımızı oluşturuyoruz.
Classımızın özelliklerine gelirsek Attributes sekmesinde ayarımız yer almaktadır.
Ve class ımızda hazır.
Son olarak bu ayarları kullanıcı özelliklerine atayabilmek için “User” class ının özelliklerine geliyoruz.
Relationship sekmesinden yeni bir klass ekliyoruz.
Ve son oluşturduğumuz class ımızı buraya ekliyoruz.
DC ler yapılan şema değişikliğini beş dakika içerisinde güncellerler. Beklemek istemiyorsanız elle tetikleyebilirsiniz.
Bu işlemlerin ardından yeni attribute kullanılmaya hazır haldedir. Active Directory Users and Computers kabından kullanıcı özelliklerine gelip attibutes sekmesine gelirseniz eğer attribute listesinde göreceksiniz.
Bu alandan değer de girebilirsiniz.
Yeni attribute ümüzü başarılı bir şekilde oluşturduk ve değer girilecek hale getirdik.
İsterseniz kullanımını biraz daha kolaylaştırmak için kullanıcının üzerine sağ tıkladığınızda açılan menüye de yeni attribute ünüzü ekleyebilirsiniz. Buradan değer girebilir ya da eski değeri görebilirsiniz.
Bu işlem için bir scripte ihityacınız vardır.
Aşağıdaki scripti içerisinde gerekli değişiklikleri yaparak sunucuya kopyalıyoruz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
Dim oRoot Dim oDisp Dim oCont Dim aMenu Dim iCount Dim sNewMenu Dim oFileSystem Dim sOutFile Dim sSystemFolder Set oFileSystem = WScript.CreateObject("Scripting.FileSystemObject") sSystemFolder = oFileSystem.GetSpecialFolder(1) 'Connect to Display Specifiers Container set oRoot = Getobject("LDAP://RootDSE") set oCont = GetObject("LDAP://" & "CN=409, CN=DisplaySpecifiers," & oRoot.get("configurationNamingContext")) Set oDisp = oCont.GetObject("displaySpecifier","cn=user-Display") MsgBox "Display Specifier: " & oDisp.Name 'Add Attribute Display Names oDisp.PutEx 3,"attributeDisplayNames" , Array("TCKimlik,TC Kimlik No") oDisp.SetInfo 'Add Shell Context Menu MsgBox "Adding Shell Context Menu item" iCount = 0 If Not IsEmpty(oDisp.shellContextMenu) Then aMenu = oDisp.GetEx("shellContextMenu") For iCount = LBound(aMenu) to UBound(aMenu) MsgBox "Existing Menu item: " & aMenu(iCount) Next iCount = iCount + 1 End If sNewMenu = CStr(iCount) & ",&TC Kimlik No...,hrshell.vbs" oDisp.PutEx 3,"shellContextMenu" , Array(sNewMenu) oDisp.SetInfo MsgBox "Adding Shell Context Menu Program" Set sOutFile = oFileSystem.CreateTextFile(sSystemFolder & "\hrshell.vbs",True) sOutFile.WriteLine "Dim Args" sOutFile.WriteLine "Dim oUser" sOutFile.WriteLine "Set Args = Wscript.Arguments" sOutFile.WriteLine "MsgBox " & Chr(34) & "LDAP Path: " & Chr(34) & " & Args(0)" sOutFile.WriteLine "MsgBox " & Chr(34) & "Object Class: " & Chr(34) & " & Args(1)" sOutFile.WriteLine "Set oUser = GetObject(Args(0))" sOutFile.WriteLine "MsgBox " & Chr(34) & "TC Kimlik No" & Chr(34) & " & vbCRLF & " & Chr(34) & "TC Kimlik No: " & Chr(34) & " & oUser.TCKimlik" sOutFile.WriteLine "Set oUser = Nothing" sOutFile.WriteLine "WScript.Quit" sOutFile.Close 'Add Admin Context Menu MsgBox "Adding Admin Context Menu item" iCount = 0 If Not IsEmpty(oDisp.adminContextMenu) Then aMenu = oDisp.GetEx("adminContextMenu") For iCount = LBound(aMenu) to UBound(aMenu) MsgBox "Existing Menu item: " & aMenu(iCount) Next iCount = iCount + 1 End If sNewMenu = CStr(iCount) & ",&TC Kimlik No...,hradmin.vbs" oDisp.PutEx 3,"adminContextMenu" , Array(sNewMenu) oDisp.SetInfo MsgBox "Adding Admin Context Menu Program" Set sOutFile = oFileSystem.CreateTextFile(sSystemFolder & "\hradmin.vbs",True) sOutFile.WriteLine "Dim Args" sOutFile.WriteLine "Dim oUser" sOutFile.WriteLine "Dim temp" sOutFile.WriteLine "Set Args = Wscript.Arguments" sOutFile.WriteLine "MsgBox " & Chr(34) & "LDAP Path: " & Chr(34) & " & Args(0)" sOutFile.WriteLine "MsgBox " & Chr(34) & "Object Class: " & Chr(34) & " & Args(1)" sOutFile.WriteLine "Set oUser = GetObject(Args(0))" sOutFile.WriteLine "temp = InputBox(" & Chr(34) & "Mevcut No: " & Chr(34) & " & oUser.TCKimlik & vbCRLF & " & Chr(34) & "Yeni Numara" & Chr(34) & ")" sOutFile.WriteLine "if temp <> " & Chr(34) & Chr(34) & " then oUser.Put " & Chr(34) & "TCKimlik" & Chr(34) & ",temp" sOutFile.WriteLine "oUser.SetInfo" sOutFile.WriteLine "Set oUser = Nothing" sOutFile.WriteLine "WScript.Quit" sOutFile.Close MsgBox "Quit..." Set oDisp = Nothing Set oCont = Nothing Set oRoot = Nothing Set oFileSystem = Nothing WScript.Quit |
Atrribute ismi 18,41,67 ve 68. satırlardında yer almaktadır. Siz kendi attribute isminize göre bu alanları değiştirmelisiniz.
Ayrıca 18,30,41 ve satırda menü de gözükecek isim yer alır. Bunu da kendi uygulamanıza göre değiştirmelisiniz.
Açılan menü içindeki alanlarda script te yer almaktadır.
Dosya uzantısı vbs olmalıdır. Daha sonrasında komut satırından bu scripti çalıştırıyoruz.
Karışınıza birçok onay kutusu gelecektir.
İşlem bitince system32 klasörüne iki adet dosya oluşturulacaktır. Menü den her tıkladığınızda bu scriptler çalıştırılmaktadır.
Tüm işlemler bitmiş bulunmaktadır.
Kullanıcımızın üzerine sağ tıkladığımızda yeni attribute ümüz ile ilgili menü eklenmiştir.
Açtığımızda önce scriptlerin çalıştığına dair uyarılar gelmektedir. Ardından daha önce verilmiş değer gösterilmektedir. Yeni değer girebileceğimiz alan da en alt da yer almaktadır.
sorun yasıyorum duzenlemeler sonucu sag tıklayıca menuye eklemeyı basardım ancak tıkladıgımda found veriyor tc yi yazacağım secenek cıkmıyor
Çalıştırdığınız script i kontrol etmenizi öneririm.