Nous verrons ensemble dans ce tutoriel comment ajouter un nouvel attribut personnalisé dans l’Active Directory en fonction de vos besoins.
Dans mon cas, je souhaite utiliser un attribut de type booléen comme filtre de synchronisation de mes objets Active Directory dans Azure Active Directory (Via Azure Active Directory Connect).
Pour commencer, ouvrez une console « mmc.exe »
Ajoutez le snap-in « Active Directory Schema », puis cliquez sur « OK ».
Il est possible que celui-ci ne soit pas disponible. Pour remédier à ça, il vous suffit d’exécuter cette commande via un prompt ouvert en tant qu’administrateur.
regsvr32 schmmgmt.dll
Déroulez l’arborescence « Active Directory Schema… » puis cliquez droit sur « Attributes » puis sur « Create Attribute… »
Une popup vous signal que toute création d’un objet dans le schéma est permanente, cliquez sur « Continue ».
Renseignez les informations suivantes :
- Common Name : Correspond au nom de l’attribut
- LDAP Display Name : Correspond au nom LDAP de l’attribut
- Unique X500 Object ID : Correspond à un ID unique de l’attribut dans votre schéma Active Directory ( Référez vous au script d’après pour générer cet ID)
- Description : Correspond à la description de l’attribut
- Syntax : Correspond au type de l’attribut
- Minimum : Range minimum
- Maximum : Range maximum
Voici le script à utiliser pour généré un ID unique, il s’agit d’un script VBS a exécuter en tant qu’administrateur depuis un contrôleur de domaine.
Plus d’informations disponibles ici : https://gallery.technet.microsoft.com/scriptcenter/56b78004-40d0-41cf-b95e-6e795b2e8a06
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
‘Output the resulted OID with best practice info
Wscript.Echo « 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
Exemple après exécution du script
Votre attribut est créé, rendez-vous dans ses propriétés puis cochez les cases suivantes puis validez par « OK » :
- Attribute is active
- Replicate this attribute to the Global Catalog
- Attribute is copied when duplicating a user
Il faut maintenant l’associer à une classe et dans mon cas, je souhaite que l’attribut soit lié à tous mes objets utilisateurs « User ».
Cliquez droit sur la classe « User » puis sur « Properties ».
Rendez-vous dans l’onglet « Attributes » puis cliquez sur « Add… »
Sélectionnez l’attribut que vous venez de créer puis cliquez sur « OK ».
L’attribut apparaît désormais dans la liste des attributs de la classe user.
Cliquez sur « OK » pour valider.
Il est temps de valider avec un de vos utilisateurs du domaine que l’attribut soit bien disponible.
Rendez-vous dans les propriétés de l’utilisateurs puis dans la partie « Attribute Editor » et vérifiez enfin que l’attribut nouvellement créé soit bien la.
Pour changer la valeur, il vous suffit de double cliquer sur l’attribut et sélectionner la valeur que vous souhaitez attribuer.
Bonjour,
Pour que le second attribut et suivants apparaissent dans la classe user (par exemple) il faut cocher l’option Attribute is copied when duplicating a user comme dit plus haut.
Cependant cette option est systématiquement grisée…
Pour y remédier il faut se connecter au Schema AD avec Modification ADSI et chercher attribut voulu puis l’éditer et chercher searchflags. En modifier la valeur avec 0x16 et la l’option est dégrisée ..
Hello,
Merci pour ton retour avec la solution.
Jérémy
Bonjour,
Tout d’abord merci pour ce tuto qui me sert énormément.
Cependant j’ai un probléme incompréhensible.
J’ai suivi ce ce tuto pour ajouter attribut dans mon schema AD. Tout a bien fonctionné.
J’ai effectué la même procédure pour mon second attribut à rajouter, seulement impossible de voir ce nouvel attribut lors de l’ajout à la classe user ?
Il n’apparaît pas dans la liste des attributs à ajouter ?
Merci de votre aide.