Zugriff auf ADS
Hallo zusammen,
wer kann helfen und eine genaue Anleitung schicken:
für eine Anwendung (Access oder HTML Seite), würde ich gerne auf das ADS zugreifen.
Name, Vorname, Telefonnummer usw.
Wie kann man das realisieren?
Danke
wer kann helfen und eine genaue Anleitung schicken:
für eine Anwendung (Access oder HTML Seite), würde ich gerne auf das ADS zugreifen.
Name, Vorname, Telefonnummer usw.
Wie kann man das realisieren?
Danke
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 86231
Url: https://administrator.de/contentid/86231
Ausgedruckt am: 22.11.2024 um 13:11 Uhr
6 Kommentare
Neuester Kommentar
Hallo Andreas,
mit diesem Code kannst Du mit ACCESS auf das AD zugreifen.
Public Function Import_AD()
Dim sqls
Dim rstemp As Recordset
sqls = "Select * from AD" 'Das ist die Tabelle in die die Werte kommen. Alle Felder sind Text Felder mit 255 Characters
Set rstemp = CurrentDb.OpenRecordset(sqls)
'Open AD Connection
Set ado = CreateObject("ADODB.Connection")
ado.Provider = "ADSDSOObject"
ado.Open
Set rs = ado.Execute("<LDAP:DC=XXX,DC=XXX,DC=XXX,DC=XXX,DC=XXX>;(&(objectClass=user)(samaccountname=*));ADsPath;SubTree") ' Die XXX mit Deinen Werten füllen
rs.MoveFirst
'Loop till all objects are imported
Do Until rs.EOF
useradpath = rs.Fields.Item("ADsPath").Value
'Get the actual User Object
Set objUser = GetObject(useradpath)
'Add the fields to AD Table
On Error Resume Next
rstemp.AddNew
rstemp.Fields("ADPath") = useradpath
rstemp.Fields("FullName") = objUser.FullName
rstemp.Fields("Extensionattribute1") = objUser.Extensionattribute1
rstemp.Fields("distinguishedname") = objUser.distinguishedname
rstemp.Fields("sAMAccountName") = objUser.sAMAccountName
rstemp.Fields("Login") = objUser.Login
rstemp.Fields("givenName") = objUser.givenName
rstemp.Fields("sn") = objUser.sn
rstemp.Fields("c") = objUser.c
rstemp.Fields("co") = objUser.co
rstemp.Fields("Division") = objUser.Division
rstemp.Fields("physicalDeliveryOfficeName") = objUser.physicalDeliveryOfficeName
rstemp.Fields("displayname") = objUser.displayname
rstemp.Fields("company") = objUser.company
rstemp.Fields("manager") = objUser.manager
rstemp.Fields("userPrincipalName") = objUser.userPrincipalName
rstemp.Fields("assistant") = objUser.assistant
rstemp.Fields("st") = objUser.st
rstemp.Fields("title") = objUser.title
rstemp.Fields("employeeType") = objUser.employeeType
rstemp.Fields("telephoneNumber") = objUser.telephoneNumber
rstemp.Fields("department") = objUser.department
rstemp.Fields("logoncount") = objUser.logoncount
rstemp.Fields("objectcategory") = objUser.objectcategory
rstemp.Fields("home") = objUser.homephone
rstemp.Fields("mobile") = objUser.mobile
rstemp.Fields("homedirectory") = objUser.homedirectory
rstemp.Fields("homedrive") = objUser.homedrive
rstemp.Fields("pcode") = objUser.postofficebox
rstemp.Fields("street") = objUser.streetaddress
rstemp.Fields("town") = objUser.l
rstemp.Fields("faxno") = objUser.facsimileTelephonenumber
rstemp.Fields("initials") = objUser.initials
rstemp.Update
'clean objUser
Set objUser = Nothing
rs.MoveNext
Loop
On Error GoTo 0
rs.Close
ado.Close
End Function
Hier noch eine Liste von AD-Feldern :
objUser.operatorCount
objUser.otherFacsimileTelephoneNumber
objUser.otherHomePhone
objUser.otherIpPhone
objUser.otherLoginWorkstations
objUser.otherMailbox
objUser.otherMobile
objUser.otherPager
objUser.otherTelephone
objUser.otherWellKnownObjects
objUser.ou
objUser.ownerBL
objUser.pager
objUser.partialAttributeDeletionList
objUser.partialAttributeSet
objUser.personalPager
objUser.personalTitle
objUser.photo
objUser.physicalDeliveryOfficeName
objUser.pOPCharacterSet
objUser.pOPContentFormat
objUser.possibleInferiors
objUser.PostalAddress
objUser.postalCode
objUser.postofficebox
objUser.preferredDeliveryMethod
objUser.preferredLanguage
objUser.preferredOU
objUser.primaryGroupID
objUser.primaryInternationalISDNNumber
objUser.primaryTelexNumber
objUser.profilePath
objUser.protocolSettings
objUser.proxiedObjectName
objUser.proxyAddresses
objUser.publicDelegates
objUser.publicDelegatesBL
objUser.pwdLastSet
objUser.queryPolicyBL
objUser.registeredAddress
objUser.replicatedObjectVersion
objUser.replicationSensitivity
objUser.replicationSignature
objUser.replPropertyMetaData
objUser.replUpToDateVector
objUser.repsFrom
objUser.repsTo
objUser.revision
objUser.rid
objUser.roomNumber
objUser.sAMAccountType
objUser.scriptPath
objUser.sDRightsEffective
objUser.secretary
objUser.securityIdentifier
objUser.securityProtocol
objUser.seeAlso
objUser.serialNumber
objUser.serverReferenceBL
objUser.servicePrincipalName
objUser.showInAddressBook
objUser.showInAdvancedViewOnly
objUser.sIDHistory
objUser.siteObjectBL
objUser.sn
objUser.st
objUser.street
objUser.streetaddress
objUser.structuralObjectClass
objUser.submissionContLength
objUser.subRefs
objUser.subSchemaSubEntry
objUser.supplementalCredentials
objUser.supportedAlgorithms
objUser.systemFlags
objUser.targetAddress
objUser.telephoneAssistant
objUser.telephoneNumber
objUser.teletexTerminalIdentifier
objUser.telexNumber
objUser.terminalServer
objUser.textEncodedORAddress
objUser.thumbnailLogo
objUser.thumbnailPhoto
objUser.title
objUser.tokenGroups
objUser.tokenGroupsGlobalAndUniversal
objUser.tokenGroupsNoGCAcceptable
objUser.uid
objUser.unauthOrig
objUser.unauthOrigBL
objUser.unicodePwd
objUser.unmergedAtts
objUser.url
objUser.userAccountControl
objUser.userCert
objUser.userCertificate
objUser.userParameters
objUser.userPassword
objUser.userPKCS12
objUser.userPrincipalName
objUser.userSharedFolder
objUser.userSharedFolderOther
objUser.userSMIMECertificate
objUser.userWorkstations
objUser.uSNDSALastObjRemoved
objUser.USNIntersite
objUser.uSNLastObjRem
objUser.uSNSource
objUser.versionNumber
objUser.wbemPath
objUser.wellKnownObjects
objUser.whenChanged
objUser.whenCreated
objUser.wWWHomePage
objUser.x121Address
objUser.x500uniqueIdentifier
objUser.operatorCount
objUser.otherFacsimileTelephoneNumber
objUser.otherHomePhone
objUser.otherIpPhone
objUser.otherLoginWorkstations
objUser.otherMailbox
objUser.otherMobile
objUser.otherPager
objUser.otherTelephone
objUser.otherWellKnownObjects
objUser.ou
objUser.ownerBL
objUser.pager
objUser.partialAttributeDeletionList
objUser.partialAttributeSet
objUser.personalPager
objUser.personalTitle
objUser.photo
objUser.physicalDeliveryOfficeName
objUser.pOPCharacterSet
objUser.pOPContentFormat
objUser.possibleInferiors
objUser.PostalAddress
objUser.postalCode
objUser.postofficebox
objUser.preferredDeliveryMethod
objUser.preferredLanguage
objUser.preferredOU
objUser.primaryGroupID
objUser.primaryInternationalISDNNumber
objUser.primaryTelexNumber
objUser.profilePath
objUser.protocolSettings
objUser.proxiedObjectName
objUser.proxyAddresses
objUser.publicDelegates
objUser.publicDelegatesBL
objUser.pwdLastSet
objUser.queryPolicyBL
objUser.registeredAddress
objUser.replicatedObjectVersion
objUser.replicationSensitivity
objUser.replicationSignature
objUser.replPropertyMetaData
objUser.replUpToDateVector
objUser.repsFrom
objUser.repsTo
objUser.revision
objUser.rid
objUser.roomNumber
objUser.sAMAccountType
objUser.scriptPath
objUser.sDRightsEffective
objUser.secretary
objUser.securityIdentifier
objUser.securityProtocol
objUser.seeAlso
objUser.serialNumber
objUser.serverReferenceBL
objUser.servicePrincipalName
objUser.showInAddressBook
objUser.showInAdvancedViewOnly
objUser.sIDHistory
objUser.siteObjectBL
objUser.sn
objUser.st
objUser.street
objUser.streetaddress
objUser.structuralObjectClass
objUser.submissionContLength
objUser.subRefs
objUser.subSchemaSubEntry
objUser.supplementalCredentials
objUser.supportedAlgorithms
objUser.systemFlags
objUser.targetAddress
objUser.telephoneAssistant
objUser.telephoneNumber
objUser.teletexTerminalIdentifier
objUser.telexNumber
objUser.terminalServer
objUser.textEncodedORAddress
objUser.thumbnailLogo
objUser.thumbnailPhoto
objUser.title
objUser.tokenGroups
objUser.tokenGroupsGlobalAndUniversal
objUser.tokenGroupsNoGCAcceptable
objUser.uid
objUser.unauthOrig
objUser.unauthOrigBL
objUser.unicodePwd
objUser.unmergedAtts
objUser.url
objUser.userAccountControl
objUser.userCert
objUser.userCertificate
objUser.userParameters
objUser.userPassword
objUser.userPKCS12
objUser.userPrincipalName
objUser.userSharedFolder
objUser.userSharedFolderOther
objUser.userSMIMECertificate
objUser.userWorkstations
objUser.uSNChanged
objUser.uSNCreated
objUser.uSNDSALastObjRemoved
objUser.USNIntersite
objUser.uSNLastObjRem
objUser.uSNSource
objUser.versionNumber
objUser.wbemPath
objUser.wellKnownObjects
objUser.whenChanged
objUser.whenCreated
objUser.wWWHomePage
objUser.x121Address
objUser.x500uniqueIdentifier
Einige dieser Felder sind multidimensional (das kannst Du über ADSI-EDIT herausfinden, oder wenn die Funktion auf ainen Fehler läuft ) ) und müssen entsprechend in ein Variantfeld zwischengespeichert werden
Mit der folgenden Funktion kannst Du alle Objektnamen ermitteln:
Public Function Get_ObjectNames()
'Show all objectnames
Set ado = CreateObject("ADODB.Connection")
ado.Provider = "ADSDSOObject"
ado.Open
Set rs = ado.Execute("<LDAP:DC=XXX,DC=XXX,DC=XXX,DC=XXX,DC=XXX>;(&(objectClass=user)(samaccountname=*));ADsPath;SubTree") ' Die XXX mit Deinen Werten füllen
rs.MoveFirst
Do Until rs.EOF
useradpath = rs.Fields.Item("ADsPath").Value
Set objUser = GetObject(useradpath)
Set objSchema = GetObject(objUser.Schema)
For Each Property In objSchema.MandatoryProperties
Debug.Print Property
Next
For Each Property In objSchema.OptionalProperties
Debug.Print Property
Next
Set objSchema = Nothing
Set objUser = Nothing
Exit Do
rs.MoveNext
Loop
rs.Close
ado.Close
End Function
Ich hoffe, damit kommst Du weiter
Gruß
Ralf
mit diesem Code kannst Du mit ACCESS auf das AD zugreifen.
Public Function Import_AD()
Dim sqls
Dim rstemp As Recordset
sqls = "Select * from AD" 'Das ist die Tabelle in die die Werte kommen. Alle Felder sind Text Felder mit 255 Characters
Set rstemp = CurrentDb.OpenRecordset(sqls)
'Open AD Connection
Set ado = CreateObject("ADODB.Connection")
ado.Provider = "ADSDSOObject"
ado.Open
Set rs = ado.Execute("<LDAP:DC=XXX,DC=XXX,DC=XXX,DC=XXX,DC=XXX>;(&(objectClass=user)(samaccountname=*));ADsPath;SubTree") ' Die XXX mit Deinen Werten füllen
rs.MoveFirst
'Loop till all objects are imported
Do Until rs.EOF
useradpath = rs.Fields.Item("ADsPath").Value
'Get the actual User Object
Set objUser = GetObject(useradpath)
'Add the fields to AD Table
On Error Resume Next
rstemp.AddNew
rstemp.Fields("ADPath") = useradpath
rstemp.Fields("FullName") = objUser.FullName
rstemp.Fields("Extensionattribute1") = objUser.Extensionattribute1
rstemp.Fields("distinguishedname") = objUser.distinguishedname
rstemp.Fields("sAMAccountName") = objUser.sAMAccountName
rstemp.Fields("Login") = objUser.Login
rstemp.Fields("givenName") = objUser.givenName
rstemp.Fields("sn") = objUser.sn
rstemp.Fields("c") = objUser.c
rstemp.Fields("co") = objUser.co
rstemp.Fields("Division") = objUser.Division
rstemp.Fields("physicalDeliveryOfficeName") = objUser.physicalDeliveryOfficeName
rstemp.Fields("displayname") = objUser.displayname
rstemp.Fields("company") = objUser.company
rstemp.Fields("manager") = objUser.manager
rstemp.Fields("userPrincipalName") = objUser.userPrincipalName
rstemp.Fields("assistant") = objUser.assistant
rstemp.Fields("st") = objUser.st
rstemp.Fields("title") = objUser.title
rstemp.Fields("employeeType") = objUser.employeeType
rstemp.Fields("telephoneNumber") = objUser.telephoneNumber
rstemp.Fields("department") = objUser.department
rstemp.Fields("logoncount") = objUser.logoncount
rstemp.Fields("objectcategory") = objUser.objectcategory
rstemp.Fields("home") = objUser.homephone
rstemp.Fields("mobile") = objUser.mobile
rstemp.Fields("homedirectory") = objUser.homedirectory
rstemp.Fields("homedrive") = objUser.homedrive
rstemp.Fields("pcode") = objUser.postofficebox
rstemp.Fields("street") = objUser.streetaddress
rstemp.Fields("town") = objUser.l
rstemp.Fields("faxno") = objUser.facsimileTelephonenumber
rstemp.Fields("initials") = objUser.initials
rstemp.Update
'clean objUser
Set objUser = Nothing
rs.MoveNext
Loop
On Error GoTo 0
rs.Close
ado.Close
End Function
Hier noch eine Liste von AD-Feldern :
objUser.operatorCount
objUser.otherFacsimileTelephoneNumber
objUser.otherHomePhone
objUser.otherIpPhone
objUser.otherLoginWorkstations
objUser.otherMailbox
objUser.otherMobile
objUser.otherPager
objUser.otherTelephone
objUser.otherWellKnownObjects
objUser.ou
objUser.ownerBL
objUser.pager
objUser.partialAttributeDeletionList
objUser.partialAttributeSet
objUser.personalPager
objUser.personalTitle
objUser.photo
objUser.physicalDeliveryOfficeName
objUser.pOPCharacterSet
objUser.pOPContentFormat
objUser.possibleInferiors
objUser.PostalAddress
objUser.postalCode
objUser.postofficebox
objUser.preferredDeliveryMethod
objUser.preferredLanguage
objUser.preferredOU
objUser.primaryGroupID
objUser.primaryInternationalISDNNumber
objUser.primaryTelexNumber
objUser.profilePath
objUser.protocolSettings
objUser.proxiedObjectName
objUser.proxyAddresses
objUser.publicDelegates
objUser.publicDelegatesBL
objUser.pwdLastSet
objUser.queryPolicyBL
objUser.registeredAddress
objUser.replicatedObjectVersion
objUser.replicationSensitivity
objUser.replicationSignature
objUser.replPropertyMetaData
objUser.replUpToDateVector
objUser.repsFrom
objUser.repsTo
objUser.revision
objUser.rid
objUser.roomNumber
objUser.sAMAccountType
objUser.scriptPath
objUser.sDRightsEffective
objUser.secretary
objUser.securityIdentifier
objUser.securityProtocol
objUser.seeAlso
objUser.serialNumber
objUser.serverReferenceBL
objUser.servicePrincipalName
objUser.showInAddressBook
objUser.showInAdvancedViewOnly
objUser.sIDHistory
objUser.siteObjectBL
objUser.sn
objUser.st
objUser.street
objUser.streetaddress
objUser.structuralObjectClass
objUser.submissionContLength
objUser.subRefs
objUser.subSchemaSubEntry
objUser.supplementalCredentials
objUser.supportedAlgorithms
objUser.systemFlags
objUser.targetAddress
objUser.telephoneAssistant
objUser.telephoneNumber
objUser.teletexTerminalIdentifier
objUser.telexNumber
objUser.terminalServer
objUser.textEncodedORAddress
objUser.thumbnailLogo
objUser.thumbnailPhoto
objUser.title
objUser.tokenGroups
objUser.tokenGroupsGlobalAndUniversal
objUser.tokenGroupsNoGCAcceptable
objUser.uid
objUser.unauthOrig
objUser.unauthOrigBL
objUser.unicodePwd
objUser.unmergedAtts
objUser.url
objUser.userAccountControl
objUser.userCert
objUser.userCertificate
objUser.userParameters
objUser.userPassword
objUser.userPKCS12
objUser.userPrincipalName
objUser.userSharedFolder
objUser.userSharedFolderOther
objUser.userSMIMECertificate
objUser.userWorkstations
objUser.uSNDSALastObjRemoved
objUser.USNIntersite
objUser.uSNLastObjRem
objUser.uSNSource
objUser.versionNumber
objUser.wbemPath
objUser.wellKnownObjects
objUser.whenChanged
objUser.whenCreated
objUser.wWWHomePage
objUser.x121Address
objUser.x500uniqueIdentifier
objUser.operatorCount
objUser.otherFacsimileTelephoneNumber
objUser.otherHomePhone
objUser.otherIpPhone
objUser.otherLoginWorkstations
objUser.otherMailbox
objUser.otherMobile
objUser.otherPager
objUser.otherTelephone
objUser.otherWellKnownObjects
objUser.ou
objUser.ownerBL
objUser.pager
objUser.partialAttributeDeletionList
objUser.partialAttributeSet
objUser.personalPager
objUser.personalTitle
objUser.photo
objUser.physicalDeliveryOfficeName
objUser.pOPCharacterSet
objUser.pOPContentFormat
objUser.possibleInferiors
objUser.PostalAddress
objUser.postalCode
objUser.postofficebox
objUser.preferredDeliveryMethod
objUser.preferredLanguage
objUser.preferredOU
objUser.primaryGroupID
objUser.primaryInternationalISDNNumber
objUser.primaryTelexNumber
objUser.profilePath
objUser.protocolSettings
objUser.proxiedObjectName
objUser.proxyAddresses
objUser.publicDelegates
objUser.publicDelegatesBL
objUser.pwdLastSet
objUser.queryPolicyBL
objUser.registeredAddress
objUser.replicatedObjectVersion
objUser.replicationSensitivity
objUser.replicationSignature
objUser.replPropertyMetaData
objUser.replUpToDateVector
objUser.repsFrom
objUser.repsTo
objUser.revision
objUser.rid
objUser.roomNumber
objUser.sAMAccountType
objUser.scriptPath
objUser.sDRightsEffective
objUser.secretary
objUser.securityIdentifier
objUser.securityProtocol
objUser.seeAlso
objUser.serialNumber
objUser.serverReferenceBL
objUser.servicePrincipalName
objUser.showInAddressBook
objUser.showInAdvancedViewOnly
objUser.sIDHistory
objUser.siteObjectBL
objUser.sn
objUser.st
objUser.street
objUser.streetaddress
objUser.structuralObjectClass
objUser.submissionContLength
objUser.subRefs
objUser.subSchemaSubEntry
objUser.supplementalCredentials
objUser.supportedAlgorithms
objUser.systemFlags
objUser.targetAddress
objUser.telephoneAssistant
objUser.telephoneNumber
objUser.teletexTerminalIdentifier
objUser.telexNumber
objUser.terminalServer
objUser.textEncodedORAddress
objUser.thumbnailLogo
objUser.thumbnailPhoto
objUser.title
objUser.tokenGroups
objUser.tokenGroupsGlobalAndUniversal
objUser.tokenGroupsNoGCAcceptable
objUser.uid
objUser.unauthOrig
objUser.unauthOrigBL
objUser.unicodePwd
objUser.unmergedAtts
objUser.url
objUser.userAccountControl
objUser.userCert
objUser.userCertificate
objUser.userParameters
objUser.userPassword
objUser.userPKCS12
objUser.userPrincipalName
objUser.userSharedFolder
objUser.userSharedFolderOther
objUser.userSMIMECertificate
objUser.userWorkstations
objUser.uSNChanged
objUser.uSNCreated
objUser.uSNDSALastObjRemoved
objUser.USNIntersite
objUser.uSNLastObjRem
objUser.uSNSource
objUser.versionNumber
objUser.wbemPath
objUser.wellKnownObjects
objUser.whenChanged
objUser.whenCreated
objUser.wWWHomePage
objUser.x121Address
objUser.x500uniqueIdentifier
Einige dieser Felder sind multidimensional (das kannst Du über ADSI-EDIT herausfinden, oder wenn die Funktion auf ainen Fehler läuft ) ) und müssen entsprechend in ein Variantfeld zwischengespeichert werden
Mit der folgenden Funktion kannst Du alle Objektnamen ermitteln:
Public Function Get_ObjectNames()
'Show all objectnames
Set ado = CreateObject("ADODB.Connection")
ado.Provider = "ADSDSOObject"
ado.Open
Set rs = ado.Execute("<LDAP:DC=XXX,DC=XXX,DC=XXX,DC=XXX,DC=XXX>;(&(objectClass=user)(samaccountname=*));ADsPath;SubTree") ' Die XXX mit Deinen Werten füllen
rs.MoveFirst
Do Until rs.EOF
useradpath = rs.Fields.Item("ADsPath").Value
Set objUser = GetObject(useradpath)
Set objSchema = GetObject(objUser.Schema)
For Each Property In objSchema.MandatoryProperties
Debug.Print Property
Next
For Each Property In objSchema.OptionalProperties
Debug.Print Property
Next
Set objSchema = Nothing
Set objUser = Nothing
Exit Do
rs.MoveNext
Loop
rs.Close
ado.Close
End Function
Ich hoffe, damit kommst Du weiter
Gruß
Ralf
Hallo Andreas,
das sind VBA-Module
Was in <LDAP:DC=XXX,DC=XXX,DC=XXX,DC=XXX,DC=XXX> zu stehen hat hängt von der Konfiguration Deines AD's ab. Schau Dir einfach mal ein Userobjekt an, da findest Du den LDAP-Pfad.
Ansosnsten kannst Du die ersten 4 DC Einträge mit dieser Funktion auslesen:
Public Sub Get_Object_Names()
On Error Resume Next
Const ADS_SCOPE_SUBTREE = 2
Set objRootDSE = GetObject("LDAP:RootDSE")
strConfigurationNC = objRootDSE.Get("configurationNamingContext")
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
objCommand.CommandText = _
"SELECT ADsPath FROM 'LDAP:" & strConfigurationNC & "' WHERE objectClass='nTDSDSA'"
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Set objParent = GetObject(GetObject(objRecordSet.Fields("ADsPath")).Parent)
Debug.Print objParent.distinguishedname
End Sub
Da komm dann so etwas heraus:
CN=CN1 ,CN=Servers,CN=CN2,CN=Sites,CN=Configuration,DC=de,DC=int,DC=meinefirme,DC=com
Die Werte hinter DC trägst Du dann in den Aufruf ein, also:
<LDAP:DC=de,DC=int,DC=meinefirme,DC=com>
Den ersten DC= Eintrag lässt Du erst einmal weg, bis Du weist was dort stehen muß.
Gruß
Ralf
das sind VBA-Module
Was in <LDAP:DC=XXX,DC=XXX,DC=XXX,DC=XXX,DC=XXX> zu stehen hat hängt von der Konfiguration Deines AD's ab. Schau Dir einfach mal ein Userobjekt an, da findest Du den LDAP-Pfad.
Ansosnsten kannst Du die ersten 4 DC Einträge mit dieser Funktion auslesen:
Public Sub Get_Object_Names()
On Error Resume Next
Const ADS_SCOPE_SUBTREE = 2
Set objRootDSE = GetObject("LDAP:RootDSE")
strConfigurationNC = objRootDSE.Get("configurationNamingContext")
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
objCommand.CommandText = _
"SELECT ADsPath FROM 'LDAP:" & strConfigurationNC & "' WHERE objectClass='nTDSDSA'"
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Set objParent = GetObject(GetObject(objRecordSet.Fields("ADsPath")).Parent)
Debug.Print objParent.distinguishedname
End Sub
Da komm dann so etwas heraus:
CN=CN1 ,CN=Servers,CN=CN2,CN=Sites,CN=Configuration,DC=de,DC=int,DC=meinefirme,DC=com
Die Werte hinter DC trägst Du dann in den Aufruf ein, also:
<LDAP:DC=de,DC=int,DC=meinefirme,DC=com>
Den ersten DC= Eintrag lässt Du erst einmal weg, bis Du weist was dort stehen muß.
Gruß
Ralf