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, 9413 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
VB for Applications
gelöst Wo ist der Fehler in diesem VBS Codeausschnitt? (2)

Frage von gabrixl zum Thema VB for Applications ...

VB for Applications
gelöst Tool zur scriptbasierten PDF-Bearbeitung gesucht (VBS oder Batch) (6)

Frage von SarekHL zum Thema VB for Applications ...

Batch & Shell
gelöst Hilfe Bei einem vbs Script (19)

Frage von Hattori-Hanzo zum Thema Batch & Shell ...

Batch & Shell
gelöst Verzeichniss überwachen Datei kopieren und umbenennen (6)

Frage von fischle63 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Microsoft

Restrictor: Profi-Schutz für jedes Window

Tipp von AlFalcone zum Thema Microsoft ...

Batch & Shell

Batch zum Zurücksetzen eines lokalen Profils

Tipp von Mr.Error zum Thema Batch & Shell ...

RedHat, CentOS, Fedora

Fedora, RedHat, Centos: DNS-Search Domain setzen

(13)

Tipp von Frank zum Thema RedHat, CentOS, Fedora ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
VPN Tunnel aufbauen (16)

Frage von Hajo2006 zum Thema LAN, WAN, Wireless ...

Microsoft Office
Saubere HTML aus Word-Dokument (15)

Frage von peterpa zum Thema Microsoft Office ...

Router & Routing
ASUS RT-N18U mit VPN Client hinter Fritzbox - Portforwarding (15)

Frage von marshall75000 zum Thema Router & Routing ...