اکتیو دایرکتوری, مایکروسافت

نحوه ایجاد ویژگی‌های سفارشی در اکتیو دایرکتوری

1 دقیقه خواندن
در این مقاله یاد می‎گیریم که چگونه می‎توانیم ویژگی‎های جدیدی را بصورت سفارشی در اکتیو دایرکتوری ایجاد کنیم و به کاربران اختصاص دهیم.

سرویس اکتیو دایرکتوری برای ذخیره داده ها از اشیاء و ویژگی‎هایی(Attribute) استفاده می‎کند، تمام این ویژگی‎ها توسط Schema تعریف و مشخص می‎شوند که بخشی از Active Directory است.
به طور پیش فرض، اکتیو دایرکتوری شامل تمام ویژگی‎های ضروری برای هر سازمان است، اما الزامات هر سازمان با دیگری متفاوت است، هر سازمان ممکن است بخواهد ویژگی‎هایی را به اکتیو دایرکتوری اضافه کند که به طور پیش فرض وجود ندارند. به عنوان مثال، شما به عنوان مدیر IT در یک دانشگاه یا موسسه بزرگ کار می‌کنید و از شما خواسته می‌شود که برخی از ویژگی‌های سفارشی مانند نمره، دوره‌ها، نام دانشگاه و غیره را برای دانشجویان اضافه کنید. این کار از طریق توسعه Active Directory Schemaقابل انجام است.

پیش نیازها:

•  تغییرات Schema مستلزم آن است که سرور DC که نقش Schema Master را بر عهده دارد آنلاین و در دسترس باشد.
•  توصیه می‎شود این عملیات بر روی سروری که نقش Schema Master را دارد انجام گیرد.
•  شما باید عضو گروه Schema Administrators و یا Enterprise Administrators باشید.

رجیستر کردن Schema Snap-in

•  پنجره Cmd را با دسترسی Administrator اجرا کنید.
•  دستور RegSvr32 SchmMgmt.dll را تایپ و اجرا کنید.
•  شما باید پیغام اجرای موفقیت آمیز را دریافت کنید.

افزودن ویژگی‎های سفارشی

• کلیدهای ‘Windows +R’ را فشار دهید تا پنجره Run باز شود.
 mmc را تایپ کرده و Enter را بزنید.
•  از منوی File گزینه Add/Remove snap-in را انتخاب کنید. یا به سادگی کلیدهای ‘Ctrl+M’ را فشار دهید تا Add/Remove snap-in باز شود.
• گزینه Active Directory Schema را انتخاب کنید، روی Add و سپس OK کلیک کنید.

• گزینه Active Directory Schema را باز کنید، روی Attributes راست کلیک کرده و Create Attribute را بزنید.​

• پیغام هشداری دریافت می کنید که باید آنرا تائید کنید.


اکنون پنجره Create New Attribute را خواهید دید.

فیلدهای Common Name و LDAP Display Name را وارد کنید. برای مثال، اگر می‌خواهید یک ویژگی سفارشی با نام User Address ایجاد کنید، در قسمت Common Name عبارت User Address و در قسمت LDAP Display Name عبارت UserAddress را تایپ کنید. توجه داشته باشید که LDAP Display Name نمی تواند حاوی فضای خالی باشد.

فیلد Unique X500 Object ID یا (OID) شامل کد منحصربفرد شی مورد نظر است. برای تولید یک OID جدید کد زیر را بصورت فایلی با پسوند vbs ذخیره کنید، با اجرای آن یک OID جدید تولید می‎شود که باید در فیلد مورد نظر وارد کنید.

				
					' oidgen.vbs 
'  
' THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED  
' OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR  
' FITNESS FOR A PARTICULAR PURPOSE. 
' 
' Copyright (c) Microsoft Corporation. All rights reserved 
' Improvements made by Ryein C. Goddard
' 
' This script is not supported under any Microsoft standard support program or service.  
' The script is provided AS IS without warranty of any kind. Microsoft further disclaims all 
' implied warranties including, without limitation, any implied warranties of merchantability 
' or of fitness for a particular purpose. The entire risk arising out of the use or performance 
' of the scripts and documentation remains with you. In no event shall Microsoft, its authors, 
' or anyone else involved in the creation, production, or delivery of the script be liable for  
' any damages whatsoever (including, without limitation, damages for loss of business profits,  
' business interruption, loss of business information, or other pecuniary loss) arising out of  
' the use of or inability to use the script or documentation, even if Microsoft has been advised  
' of the possibility of such damages. 
' ---------------------------------------------------------------------- 
Function GenerateOID() 
    'Initializing Variables 
    Dim guidString, oidPrefix 
    Dim guidPart0, guidPart1, guidPart2, guidPart3, guidPart4, guidPart5, guidPart6 
    Dim oidPart0, oidPart1, oidPart2, oidPart3, oidPart4, oidPart5, oidPart6 
    On Error Resume Next 
    'Generate GUID 
    Set TypeLib = CreateObject("Scriptlet.TypeLib") 
    guidString = TypeLib.Guid 
    'If no network card is available on the machine then generating GUID can result with an error. 
    If Err.Number <> 0 Then 
        Wscript.Echo "ERROR: Guid could not be generated, please ensure machine has a network card." 
        Err.Clear 
        WScript.Quit 
    End If 
    'Stop Error Resume Next 
    On Error GoTo 0 
    'The Microsoft OID Prefix used for the automated OID Generator 
    oidPrefix = "1.2.840.113556.1.8000.2554" 
    'Split GUID into 6 hexadecimal numbers 
    guidPart0 = Trim(Mid(guidString, 2, 4)) 
    guidPart1 = Trim(Mid(guidString, 6, 4)) 
    guidPart2 = Trim(Mid(guidString, 11, 4)) 
    guidPart3 = Trim(Mid(guidString, 16, 4)) 
    guidPart4 = Trim(Mid(guidString, 21, 4)) 
    guidPart5 = Trim(Mid(guidString, 26, 6)) 
    guidPart6 = Trim(Mid(guidString, 32, 6)) 
    'Convert the hexadecimal to decimal 
    oidPart0 = CLng("&H" & guidPart0) 
    oidPart1 = CLng("&H" & guidPart1) 
    oidPart2 = CLng("&H" & guidPart2) 
    oidPart3 = CLng("&H" & guidPart3) 
    oidPart4 = CLng("&H" & guidPart4) 
    oidPart5 = CLng("&H" & guidPart5) 
    oidPart6 = CLng("&H" & guidPart6) 
    'Concatenate all the generated OIDs together with the assigned Microsoft prefix and return 
    GenerateOID = oidPrefix & "." & oidPart0 & "." & oidPart1 & "." & oidPart2 & "." & oidPart3 & _ 
        "." & oidPart4 & "." & oidPart5 & "." & oidPart6 
End Function 



Set oShell = WScript.CreateObject ("WScript.Shell")
oShell.run "cmd /c Regsvr32 Schmmgmt.dll"

Set objFSO=CreateObject("Scripting.FileSystemObject")
outFile="C:\Users\Administrator\Desktop\oidInfo.txt"
Set objFile = objFSO.CreateTextFile(outFile,True)

'Output the resulted OID with best practice info 
oidText = "Your root OID is: " & VBCRLF & GenerateOID & VBCRLF & VBCRLF & VBCRLF & _ 
    "This prefix should be used to name your schema attributes and classes. For example: " & _ 
    "if your prefix is ""Microsoft"", you should name schema elements like ""microsoft-Employee-ShoeSize"". " & _ 
    "For more information on the prefix, view the Schema Naming Rules in the server " & _  
    "Application Specification (http://www.microsoft.com/windowsserver2003/partners/isvs/appspec.mspx)." & _ 
    VBCRLF & VBCRLF & _ 
    "You can create subsequent OIDs for new schema classes and attributes by appending a .X to the OID where X may " & _ 
    "be any number that you choose.  A common schema extension scheme generally uses the following structure:" & VBCRLF & _ 
    "If your assigned OID was: 1.2.840.113556.1.8000.2554.999999" & VBCRLF & VBCRLF & _ 
    "then classes could be under: 1.2.840.113556.1.8000.2554.999999.1 " & VBCRLF & _  
    "which makes the first class OID: 1.2.840.113556.1.8000.2554.999999.1.1" & VBCRLF & _ 
    "the second class OID: 1.2.840.113556.1.8000.2554.999999.1.2     etc..." & VBCRLF & VBCRLF & _ 
    "Using this example attributes could be under: 1.2.840.113556.1.8000.2554.999999.2 " & VBCRLF & _ 
    "which makes the first attribute OID: 1.2.840.113556.1.8000.2554.999999.2.1 " & VBCRLF & _ 
    "the second attribute OID: 1.2.840.113556.1.8000.2554.999999.2.2     etc..." & VBCRLF & VBCRLF & _ 
     "Here are some other useful links regarding AD schema:" & VBCRLF & _ 
    "Understanding AD Schema" & VBCRLF & _ 
    "http://technet2.microsoft.com/WindowsServer/en/Library/b7b5b74f-e6df-42f6-a928-e52979a512011033.mspx " & _ 
    VBCRLF & VBCRLF & _ 
    "Developer documentation on AD Schema:" & VBCRLF & _ 
    "http://msdn2.microsoft.com/en-us/library/ms675085.aspx " & VBCRLF & VBCRLF & _ 
    "Extending the Schema" & VBCRLF & _ 
    "http://msdn2.microsoft.com/en-us/library/ms676900.aspx " & VBCRLF & VBCRLF & _ 
    "Step-by-Step Guide to Using Active Directory Schema and Display Specifiers " & VBCRLF & _ 
    "http://www.microsoft.com/technet/prodtechnol/windows2000serv/technologies/activedirectory/howto/adschema.mspx " & _ 
    VBCRLF & VBCRLF & _ 
    "Troubleshooting AD Schema " & VBCR & _ 
    "http://technet2.microsoft.com/WindowsServer/en/Library/6008f7bf-80de-4fc0-ae3e-51eda0d7ab651033.mspx  " & _ 
    VBCRLF & VBCRLF 

objFile.Write oidText
objFile.Close
				
			

در قسمت Syntax نوع داده‎ای را که قرار است این ویژگی در خود نگه دارد را مشخص کنید. مثلا اگر قرار است مقادیر متنی در این فیلد ذخیره گردد Unicode String را از منوی کشویی انتخاب می‎کنیم. اگر فکر می‌کنید قرار است این ویژگی چندین مقدار را در خود نگه دارد، گزینه Multi-Valued را تیک بزنید. همچنین می‎توانید محدودیت حداقل و حداکثر طول را برای مقادیر این فیلد مشخص کنید.

•  پس از پر کردن اطلاعات، روی OK کلیک کنید.
اکنون ویژگی جدیدی که ایجاد کرده‎ اید در قسمت Attributes در دسترس خواهد بود.

اختصاص ویژگی سفارشی به User Class

قبل از اینکه بتوانید این ویژگی را از طریقActive Directory Users and Computers استفاده کنید، باید این ویژگی را به کلاس کاربر اختصاص دهید.

• برای این کار مراحل زیر را دنبال کنید:

در کنسول گزینه Classes را باز کنید، سپس روی User کلیک راست و Properties را انتخاب کنید.

در پنجره مشخصات کاربر، به تب Attributes بروید.​

روی دکمه Add کلیک کنید و ویژگی‎ های جدید ایجاد شده را انتخاب و اضافه کنید.

با کلیک روی OK صفحه را ببندید و مدتی صبر کنید تا ویژگی‎های جدید روی همه DC ها تکثیر و Replicate شوند.

اکنون که با موفقیت ویژگی‌های سفارشی ایجاد کرده‌اید، باید Active Directory Domain Services را مجدداً راه‌اندازی کنید تا تغییرات Schema اعمال شوند.

•  کلیدهای ‘Windows+R’ را فشار دهید تا پنجره Run باز شود.
•  دستور services.msc را تایپ کرده و OK کنید.
•   روی سرویس Active Directory Domain Services راست کلیک کنید و Restart را انتخاب نمائید. هنگامی که از شما خواسته شد، روی Yes کلیک کنید تا همه سرویس‎های وابسته مجددا راه ‎اندازی شوند.

•  بررسی ویژگی‎های جدید در Active Directory Users and Computers
برای اطمینان از اینکه آیا ویژگی‌های جدید به‎درستی اضافه شده‎اند، پنجره Run را باز و dsa.msc را تایپ کنید تا کنسول Active Directory Users and Computers باز شود.
بطور پیش فرض، کنسول Active Directory Users and Computers بخش ویرایشگر ویژگی‎ها را در قسمت مشخصات کاربر نشان نمی‎دهد. برای دیدن این بخش روی گزینه View کلیک کرده و Advanced Features را انتخاب کنید.​

اکنون روی یکی از حساب های کاربری کلیک راست کرده و Properties را انتخاب کنید.
در پنجره مشخصات کاربر، Attribute Editor را انتخاب کنید تا ویژگی سفارشی که اضافه کرده‎اید را ببینید.

حالا می‎توانید روی ویژگی دوبار کلیک کرده، مقدار مورد نظر را وارد و ذخیره کنید.


دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

برای دریافت خبرنامه ما ثبت نام کنید...

به خبرنامه ما بپیوندید و منابع، محتوای انتخاب شده و الهامات طراحی را مستقیماً در صندوق ورودی خود دریافت کنید.