Printout Header
RSS Feed

Welche Objektattribute sind im Globalen Katalog enthalten?


Der Globale Katalog enthält nur eine Untermenge der Attribute aller Objekte des Active Directory Forests. Sonst wäre der Aufwand für die entsprechende Datenhaltung zu groß für die betreffenden GC Server - der Globale Katalog soll schließlich nur eine Art Nachschlagewerk für die jeweilige Umgebung darstellen. Ob ein Attribut im Global Catalog enthalten ist oder nicht, entscheidet die systemFlags Eigenschaft des Schemaobjektes für das betreffende Attribut. Wenn hier das 2. Bit (Flag FLAG_ATTR_REQ_PARTIAL_SET_MEMBER) gesetzt ist, dann ist das Attribut im globalen Katalog enthalten. Noch einfacher: Man überprüft das Attribut isMemberOfPartialAttributeSet - falls es den Wert TRUE hat, ist das Atribut im globalen Katalog.

Hier ist eine Liste derjenigen Attribute, die im Schema eines Windows Server 2008 R2 Active Directory standardmäßig im Globalen Katalog enthalten sind:

altSecurityIdentities
cn
c (country)
dc
dSCorePropagationData
frsComputerReference
fRSMemberReference
groupType
instanceType
isDeleted
isRecycled
l (location)
member
mSMQUserSid
nTSecurityDescriptor
distinguishedName
objectCategory
objectClass
objectGUID
objectSid
ou
o
partialAttributeDeletionList
partialAttributeSet
primaryGroupID
proxiedObjectName
name
replPropertyMetaData
replUpToDateVector
repsFrom
repsTo
sAMAccountName
sAMAccountType
servicePrincipalName
sIDHistory
st
street
subRefs
systemPossSuperiors
userAccountControl
userPrincipalName
uSNChanged
uSNCreated
uSNLastObjRem
wellKnownObjects
whenChanged
whenCreated
 


Man kann die aktuell im globalen Katalog enthaltenen Attribute auch sehr einfach mit dem folgenden Script auslesen:

ldapFilter = "(&(objectClass=attributeSchema)(isMemberOfPartialAttributeSet=TRUE))" Set rootDSE = GetObject("LDAP://rootDSE") schemaDN = rootDSE.Get("schemaNamingContext") Set attrList = CreateObject( "System.Collections.Sortedlist" ) Set ado = CreateObject("ADODB.Connection") ado.Provider = "ADSDSOObject" ado.Open "ADSearch" Set objectList = ado.Execute("<LDAP://" & schemaDN & ">;" & ldapFilter & ";lDAPDisplayName;subtree") While Not objectList.EOF attrName = objectList.Fields("lDAPDisplayName") attrList.Add attrName, 0 objectList.MoveNext Wend For i=0 To attrList.Count - 1 WScript.Echo attrList.GetKey(i) Next
Ohne die alphabetische Sortierung wäre die Ausgabe der Attributliste sogar noch einfacher:

ldapFilter = "(&(objectClass=attributeSchema)(isMemberOfPartialAttributeSet=TRUE))" Set rootDSE = GetObject("LDAP://rootDSE") schemaDN = rootDSE.Get("schemaNamingContext") Set ado = CreateObject("ADODB.Connection") ado.Provider = "ADSDSOObject" ado.Open "ADSearch" Set objectList = ado.Execute("<LDAP://" & schemaDN & ">;" & ldapFilter & ";lDAPDisplayName;subtree") While Not objectList.EOF attrName = objectList.Fields("lDAPDisplayName") WScript.Echo attrName objectList.MoveNext Wend