Hi All,
I have a weird issue when creating a linked custom attribute pair in AD.
The process I am following is firstly create the forward attribute with the LinkID of 1.2.840.113556.1.2.50. This apparently auto generates the LinkID. Reload schema and create the back-link attribute using the OID of the forward attribute. This goes all OK apart from when I look at the attribute details, the link ID is a negative number. For example..
The forward attribute is
The BackLink attribute is
From all the information I have read, the forward attribute link ID should be positive even number and the back-link should be positive odd number.
I'm using powershell to create the attributes. Forward attribute script is..
$RootDSE = [System.DirectoryServices.DirectoryEntry]([ADSI]"LDAP://RootDSE") # Retrieve the Schema naming context, the distinguished name of the Schema container in AD. $SchemaNC = $RootDSE.schemaNamingContext # Bind to the Schema object. $Schema = [ADSI]"LDAP://$SchemaNC" # Create object of class "attributeSchema" with common name "MyCompany-MyAttribute". $NewAttr = $Schema.Create("attributeSchema", "cn=Test-SoftwareDeliveryPrimaryUser") $NewAttr.Put("attributeID", "1.2.840.113556.1.8000.2554.1.1") # Unicode string attribute, similar to the title attribute." $NewAttr.Put("oMSyntax", 127) $NewAttr.Put("attributeSyntax", "2.5.5.1") $NewAttr.Put("isSingleValued", $False) $NewAttr.Put("isMemberOfPartialAttributeSet", $False) $NewAttr.Put("searchFlags", 1) $NewAttr.Put("lDAPDisplayName", "Test-SoftwareDeliveryPrimaryUser") $newAttr.Put("LinkID", "1.2.840.113556.1.2.50") # Create the new attribute. $NewAttr.CommitChanges() # Assign optional attributes. $NewAttr.Put("description", "Test AD attribute -Forward") #$NewAttr.Put("rangeLower", 1) #$NewAttr.Put("rangeUpper", 128) # Update the new attribute. $NewAttr.CommitChanges()
For the Back link, I am using...
$RootDSE = [System.DirectoryServices.DirectoryEntry]([ADSI]"LDAP://RootDSE") # Retrieve the Schema naming context, the distinguished name of the Schema container in AD. $SchemaNC = $RootDSE.schemaNamingContext # Bind to the Schema object. $Schema = [ADSI]"LDAP://$SchemaNC" # Create object of class "attributeSchema" with common name "MyCompany-MyAttribute". $NewAttr = $Schema.Create("attributeSchema", "cn=Test-SoftwareDeliveryPrimaryUser-BL") $NewAttr.Put("attributeID", "1.2.840.113556.1.8000.2554.1.2") # Unicode string attribute, similar to the title attribute." $NewAttr.Put("oMSyntax", 127) $NewAttr.Put("attributeSyntax", "2.5.5.1") $NewAttr.Put("isSingleValued", $False) $NewAttr.Put("isMemberOfPartialAttributeSet", $False) $NewAttr.Put("searchFlags", 1) $NewAttr.Put("lDAPDisplayName", "Test-SoftwareDeliveryPrimaryUser-BL") $newAttr.Put("LinkID", "1.2.840.113556.1.8000.2554.1.1") # Create the new attribute. $NewAttr.CommitChanges() # Assign optional attributes. $NewAttr.Put("description", "Test AD attribute -Backlink") #$NewAttr.Put("rangeLower", 1) #$NewAttr.Put("rangeUpper", 128) # Update the new attribute. $NewAttr.CommitChanges()
Environment is a test environment consisting of a single Windows Server 2012 R2 Domain Controller
I could manually declare the LinkID, but I was trying to keep user error out of the equation and thus wanted to use the auto generated method. Anyone one know why I am getting a negative number as a linkID
Thanks for taking the time to read this
Steve