VBS LDAP Verzeichniss
Ich möchte eine Tabelle erstellen mit der Ich über das LDAP mehrere Benutzer das Passwort zurücksetzen kann, diese Sollen dann Per Mail zugeschickt werden, da die Passwörter vorher generiert wurden.
Also ich bekomme es hin die Passwörter zu generieren und die E-Mails zu versenden.
Mein Problem ist wenn ich über LDAP auf das AD zugreifen möchte, bekomme ich immer die Fehlermeldung:
Automatisierungsfehler,
Ein Solches Objekt ist auf den Server nicht vorhanden.
Meine AD Struktur ist ca. Folgende wo ich auf den Benutzer zugreifen möchte:
Domaene.de
--> Benutzer
--> Firma
--> Firma_Benutzer
Ich hatte es mit folgenden beiden LDAP Verbindungen Probiert und es gab immer die gleiche Fehlermeldung
Set objuser = GetObject _
("LDAP:cn=" & strUsername & ", ou=Firma_Benutzer,dc=Domaene,dc=de")
oder
Set objuser = GetObject _
("LDAP:cn=" & strUsername & ",ou=Benutzer, ou=Firma, ou=Firma_Benutzer,dc=Domaene,dc=de")
was mach ich falsch?
Der Rest sollte ich dann eigentlich wieder hinbekommen:o
Also ich bekomme es hin die Passwörter zu generieren und die E-Mails zu versenden.
Mein Problem ist wenn ich über LDAP auf das AD zugreifen möchte, bekomme ich immer die Fehlermeldung:
Automatisierungsfehler,
Ein Solches Objekt ist auf den Server nicht vorhanden.
Meine AD Struktur ist ca. Folgende wo ich auf den Benutzer zugreifen möchte:
Domaene.de
--> Benutzer
--> Firma
--> Firma_Benutzer
Ich hatte es mit folgenden beiden LDAP Verbindungen Probiert und es gab immer die gleiche Fehlermeldung
Set objuser = GetObject _
("LDAP:cn=" & strUsername & ", ou=Firma_Benutzer,dc=Domaene,dc=de")
oder
Set objuser = GetObject _
("LDAP:cn=" & strUsername & ",ou=Benutzer, ou=Firma, ou=Firma_Benutzer,dc=Domaene,dc=de")
was mach ich falsch?
Der Rest sollte ich dann eigentlich wieder hinbekommen:o
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 114494
Url: https://administrator.de/contentid/114494
Ausgedruckt am: 20.11.2024 um 08:11 Uhr
8 Kommentare
Neuester Kommentar
So wie du das machst wirst du den User eher nicht finden.
Schau dir mal das erste Codeschnipsel an:
http://www.tek-tips.com/faqs.cfm?fid=5688
Dann brauchst du nur noch:
Grüße
Max
Übrigens: Struktur - ohne ck
cn
ist nämlich nicht der sAMAccountName
(den du wahrscheinlich benutzen willst) sondern, der commonName (so wie er in der Active-Directory-Benutzerübersicht angezeigt wird).Schau dir mal das erste Codeschnipsel an:
http://www.tek-tips.com/faqs.cfm?fid=5688
Dann brauchst du nur noch:
Set obj = GetObject("LDAP://" & SearchDistinguishedName(strUsername))
Grüße
Max
Übrigens: Struktur - ohne ck
Schön, wenn dir das hilft.
Bei deinem Problem mit mehreren Domänen würde mir aber nur einfallen, dass du die Funktion so anpasst, dass dort nicht
Alternativ solltest du auch alle deine Domänen in einen Forest aufnehmen können, und dann über
Grüße
Max
Bei deinem Problem mit mehreren Domänen würde mir aber nur einfallen, dass du die Funktion so anpasst, dass dort nicht
LDAP:rootDSE
sondern LDAP:dc=domaene,dc=de
steht und ein User evtl. explizit eine Domäne auswählen kann.Alternativ solltest du auch alle deine Domänen in einen Forest aufnehmen können, und dann über
GC://rootDSE
(nicht getestet) alle Domänen durchsuchen können.Grüße
Max
Set objuser = GetObject("LDAP://dc=Firma,dc=de" & SearchDistinguishedName(strUsername))
Das kann so nicht funktionieren.
Was hier augewertet steht ist nämlich:
Set objuser = GetObject("LDAP://dc=Firma,dc=de")
Schlägt das fehl, weil es den Useraccount in dieser Domäne nicht gibt, ist dein Rückgabewert leer.
Du müsstest die Funktion also so umschreiben, dass du die Domäne als Parameter übergeben kannst.
Aber vielleicht geht es auch schon über den Forest.
Grüße
Max
Ich hab' das ganze mal angepasst, wenn man explizit eine Domäne angibt:
Public Function SearchDistinguishedName(ByVal vSAN)
' Function: SearchDistinguishedName
' Description: Searches the DistinguishedName for a given SamAccountName
' Parameters: ByVal vSAN - The SamAccountName to search
' Returns: The DistinguishedName Name
Dim oRootDSE, oConnection, oCommand, oRecordSet
Set oConnection = CreateObject("ADODB.Connection")
oConnection.Open "Provider=ADsDSOObject;"
Set oCommand = CreateObject("ADODB.Command")
oCommand.ActiveConnection = oConnection
oCommand.CommandText = "<LDAP://dc=firma,dc=local" & _
">;(&(objectCategory=User)(samAccountName=" & vSAN & "));distinguishedName;subtree"
Set oRecordSet = oCommand.Execute
On Error Resume Next
SearchDistinguishedName = oRecordSet.Fields("DistinguishedName")
On Error GoTo 0
oConnection.Close
Set oRecordSet = Nothing
Set oCommand = Nothing
Set oConnection = Nothing
End Function
Msgbox(SearchDistinguishedName("max"))