Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

VBS LDAP Verzeichniss

Frage Entwicklung VB for Applications

Mitglied: Blackflip

Blackflip (Level 1) - Jetzt verbinden

23.04.2009, aktualisiert 14:43 Uhr, 9368 Aufrufe, 8 Kommentare

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
Mitglied: dog
23.04.2009 um 11:40 Uhr
So wie du das machst wirst du den User eher nicht finden.

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:

01.
Set obj = GetObject("LDAP://" & SearchDistinguishedName(strUsername))
Grüße

Max

Übrigens: Struktur - ohne ck
Bitte warten ..
Mitglied: Blackflip
23.04.2009 um 14:42 Uhr
hee du bist Super
Dafür könnt ich dich am liebsten Küssen.

Jetzt funktioniert das soweit, wenn ich in meiner eigenen(aktiven) Domäne suche. Das Prob-lem ist, das die Nutzer auch aus anderen Domänen kommen werden.

und ja du hattest Recht, ich hab versucht mit den Anmeldenamen den Account zu finden

Edit: hab mal bei beiden Beiträgen die Rechtschreibung überarbeitet, wenn man schon solch freundliche Hilfe bekommt
Bitte warten ..
Mitglied: dog
23.04.2009 um 16:06 Uhr
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 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
Bitte warten ..
Mitglied: Blackflip
23.04.2009 um 16:24 Uhr
Ich hab das gerade soweit angepasst, wenn ich das richtig verstanden hatte. Leider funktioniert das nicht und die Zelle 1.2 bleibt Leer. Eine Fehlermeldung kommt aber auch nicht.

Der Nutzer hat einen Displaynamen in der anderen Domäne, aber hier wird nix ausgegeben.

Die Funktion SearchDistinguishedName() ist die aus deinen Link, da hab ich eigentlich nix geändert.

01.
strUsername = "FGTSDA" 'Anmeldename aus einer anderen Domäne 
02.
 
03.
Set objuser = GetObject("LDAP://dc=Firma,dc=de" & SearchDistinguishedName(strUsername)) 
04.
'Rückgabe des Wertes aus den AD 
05.
Cells(1, 2) = objuser.DisplayName
Mit den Forest sagt mir so leider nix und muss ich erst einmal nachschauen, wie das funktionieren könnte.
Bitte warten ..
Mitglied: dog
23.04.2009 um 17:04 Uhr
01.
Set objuser = GetObject("LDAP://dc=Firma,dc=de" & SearchDistinguishedName(strUsername))
Das kann so nicht funktionieren.
Was hier augewertet steht ist nämlich:

01.
Set objuser = GetObject("LDAP://dc=Firma,dc=de")
Die Funktion SearchDistinguishedName sucht ja nur in der aktuellen Anmeldedomäne.
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
Bitte warten ..
Mitglied: Blackflip
24.04.2009 um 08:32 Uhr
Das mit den Forest find ich leider immer nur beiträge über Wälder bei google >_> Ich hab gestern schon den ganzen Abend ausprobiert.

Und zu den anderen Vorschlag, das hab ich einmal direkt in der Funktion umgeändert, bevor ich das als Parameter übergebe. An der Stelle bringt er mir dann keine Fehlermeldung aber später.

01.
    Dim oRootDSE, oConnection, oCommand, oRecordSet 
02.
 
03.
    Set oRootDSE = GetObject("LDAP://dc=Firma, dc=de") 
04.
    Set oConnection = CreateObject("ADODB.Connection") 
05.
    oConnection.Open "Provider=ADsDSOObject;" 
06.
    Set oCommand = CreateObject("ADODB.Command") 
07.
    oCommand.ActiveConnection = oConnection 
08.
    oCommand.CommandText = "<LDAP://" & oRootDSE.get("defaultNamingContext") & _ 
09.
        ">;(&(objectCategory=User)(samAccountName=" & vSAN & "));distinguishedName;subtree" 
10.
    Set oRecordSet = oCommand.Execute 
11.
    On Error Resume Next 
12.
    SearchDistinguishedName = oRecordSet.Fields("DistinguishedName") 
13.
    On Error GoTo 0 
14.
    oConnection.Close 
15.
    Set oRecordSet = Nothing 
16.
    Set oCommand = Nothing 
17.
    Set oConnection = Nothing 
18.
    Set oRootDSE = Nothing
So sieht es derzeit aus und bei kommt die Fehlermeldung: Die Verzeichniseigenschaft wurde nicht im Cache gefunden

01.
    oCommand.CommandText = "<LDAP://" & oRootDSE.get("defaultNamingContext") & _ 
02.
        ">;(&(objectCategory=User)(samAccountName=" & vSAN & "));distinguishedName;subtree"
Bitte warten ..
Mitglied: dog
24.04.2009 um 09:35 Uhr
Ich hab' das ganze mal angepasst, wenn man explizit eine Domäne angibt:

01.
Public Function SearchDistinguishedName(ByVal vSAN) 
02.
    ' Function:     SearchDistinguishedName 
03.
    ' Description:  Searches the DistinguishedName for a given SamAccountName 
04.
    ' Parameters:   ByVal vSAN - The SamAccountName to search 
05.
    ' Returns:      The DistinguishedName Name 
06.
    Dim oRootDSE, oConnection, oCommand, oRecordSet 
07.
 
08.
 
09.
    Set oConnection = CreateObject("ADODB.Connection") 
10.
    oConnection.Open "Provider=ADsDSOObject;" 
11.
    Set oCommand = CreateObject("ADODB.Command") 
12.
    oCommand.ActiveConnection = oConnection 
13.
    oCommand.CommandText = "<LDAP://dc=firma,dc=local" & _ 
14.
        ">;(&(objectCategory=User)(samAccountName=" & vSAN & "));distinguishedName;subtree" 
15.
    Set oRecordSet = oCommand.Execute 
16.
    On Error Resume Next 
17.
    SearchDistinguishedName = oRecordSet.Fields("DistinguishedName") 
18.
    On Error GoTo 0 
19.
    oConnection.Close 
20.
    Set oRecordSet = Nothing 
21.
    Set oCommand = Nothing 
22.
    Set oConnection = Nothing 
23.
End Function 
24.
 
25.
Msgbox(SearchDistinguishedName("max"))
Bitte warten ..
Mitglied: Blackflip
24.04.2009 um 14:15 Uhr
Bei meiner derzeitig angemeldeten Domäne funktioniert das Wunderbar, sobald ich aber diese ändere und ein Benutzer aus einer anderen Domäne zugreifen möchte kommt die Fehlermeldung:
Laufzeitfehler '-2147463168(80005000)':

Automatisierungsfehler

in der Zeile:
01.
strUsername = "O999999" 'Anmeldename aus einer Anderen Domäne 
02.
 
03.
Set objuser = GetObject("LDAP://" & SearchDistinguishedName(strUsername))
Das kommt nur bei anderen Domänen, Berechtigungen sollten aber alle da sein, da ich über ein AD Snapin in den anderen Domänen ebenfals alles ändern kann.
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Verzeichniss überwachen Datei kopieren und umbenennen (6)

Frage von fischle63 zum Thema Batch & Shell ...

Batch & Shell
gelöst Base64 Decode (Batch,VBS) (26)

Frage von clragon zum Thema Batch & Shell ...

Linux
Dovecot , ACLs und LDAP - das ewige Wehleiden (1)

Frage von DerWindowsFreak2 zum Thema Linux ...

PHP
gelöst PHP 7 und LDAP mit Umlauten (3)

Frage von wiesi200 zum Thema PHP ...

Neue Wissensbeiträge
Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Peripheriegeräte

Was beachten bei der Wahl einer USV Anlage im Serverschrank

(6)

Tipp von zetboxit zum Thema Peripheriegeräte ...

Windows 10

Das Windows 10 Creators Update ist auf dem Weg

(6)

Anleitung von BassFishFox zum Thema Windows 10 ...

Administrator.de Feedback

Tipp: Ungelöste Fragen ohne Antwort in Tickeransicht farblich hinterlegen

Tipp von pattern zum Thema Administrator.de Feedback ...

Heiß diskutierte Inhalte
Windows Server
gelöst Update BackupExec 2015 auf 2016 führt zu SQL-Server Problem (16)

Frage von montylein1981 zum Thema Windows Server ...

Batch & Shell
gelöst Batch um Benutzer aus Sitzung abzumelden (15)

Frage von zeroblue2005 zum Thema Batch & Shell ...

Linux
gelöst Google Chrome startet nicht (12)

Frage von Thomas91 zum Thema Linux ...