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

LDAP Suche in verschiedenen OUs

Frage Entwicklung VB for Applications

Mitglied: torben.dj

torben.dj (Level 1) - Jetzt verbinden

07.01.2015 um 09:53 Uhr, 706 Aufrufe, 4 Kommentare

Guten Morgen und ein frohes Neues,

im folgenden VBS-Skript kann ich anhand des angemeldeten Windows-Benutzers einen Adress-LDAP auslesen und mir zB Vorname, Nachname, Mailadresse etc ausgeben lassen.
Diese Angaben lasse ich in die Datei "Signatur.txt" schreiben.

01.
On Error Resume Next  
02.
Set fso = CreateObject("Scripting.FileSystemObject") 
03.
sZDatei = "Signatur.txt" 
04.
Set oZDatei = fso.OpenTextFile(sZDatei, 2, True) 
05.
Set WshNetwork = CreateObject("WScript.Network") 
06.
Username = WshNetwork.UserName 
07.
Set objUser = GetObject _  
08.
   ("LDAP://ldap.firma.de:389/uid=" &UserName &",ou=Abteilung,ou=Ort,ou=People,o=Firma,c=de") 
09.
oZDatei.Write "Mit freundlichen Grüßen" & vbCrLf & vbCrLf & vbCrLf 
10.
oZDatei.Write objUser.givenname &" " & objUser.sn & vbCrLf & vbCrLf 
11.
oZDatei.Write objUser.department & vbCrLf & vbCrLf 
12.
oZDatei.Write objUser.street & vbCrLf 
13.
oZDatei.Write objUser.postalcode &" " & objUser.l & vbCrLf & vbCrLf 
14.
oZDatei.Write "Tel.: " & objUser.telephonenumber & vbCrLf 
15.
oZDatei.Write "Mail: " & objUser.mail & vbCrLf 
16.
oZDatei.Close
Das Problem bei diesem Skript ist, dass ich wissen muss, in welcher Unter-OU sich der Benutzer befindet.
In diesem Fall ist es Firma --> People --> Ort --> Abteilung

Da ich selbst nicht sehr firm in VBS bin, nun die eigentliche Frage:

Wie kann ich das vorhandene Skritpt verändern damit nach der "uid" OU-übergreifend gesucht wird?

Vielen Dank schon mal für die Hilfe.

Bevor die Frage aufkommt, warum ich auf diesem Wege eine Signatur erstellen möchte,
die ausgelesenen Variablen werden in weiteren Skripten noch für benutzerspezifische Einrichtungen verwendet.

Mitglied: colinardo
07.01.2015, aktualisiert um 10:42 Uhr
Hallo torben.dj,
das machst du so:
01.
Const sZDatei = "Signatur.txt" 
02.
Set fso = CreateObject("Scripting.FileSystemObject") 
03.
Set objShell = CreateObject("Wscript.Shell") 
04.
 
05.
strUsername = objShell.ExpandEnvironmentStrings("%username%") 
06.
set objUser = FindAccount(strUsername) 
07.
if not objUser is nothing then 
08.
	Set oZDatei = fso.OpenTextFile(sZDatei, 2, True) 
09.
	oZDatei.Write "Mit freundlichen Grüßen" & vbCrLf & vbCrLf & vbCrLf 
10.
	oZDatei.Write objUser.givenname &" " & objUser.sn & vbCrLf & vbCrLf 
11.
	oZDatei.Write objUser.department & vbCrLf & vbCrLf 
12.
	oZDatei.Write objUser.street & vbCrLf 
13.
	oZDatei.Write objUser.postalcode &" " & objUser.l & vbCrLf & vbCrLf 
14.
	oZDatei.Write "Tel.: " & objUser.telephonenumber & vbCrLf 
15.
	oZDatei.Write "Mail: " & objUser.mail & vbCrLf 
16.
	oZDatei.Close 
17.
Else 
18.
	' Kein User mit diesem Loginnamen gefunden' 
19.
End if 
20.
 
21.
Function FindAccount(strUserName) 
22.
	On Error Resume Next 
23.
	Dim adoCommand, adoConnection 
24.
	Dim varBaseDN, varFilter 
25.
	Dim objRootDSE, varDNSDomain, strQuery, adoRecordset 
26.
 
27.
	Set adoCommand = CreateObject("ADODB.Command") 
28.
	Set adoConnection = CreateObject("ADODB.Connection") 
29.
	adoConnection.Provider = "ADsDSOObject" 
30.
	adoConnection.Open "Active Directory Provider" 
31.
	Set adoCommand.ActiveConnection = adoConnection 
32.
	 
33.
	' Search entire Active Directory domain. 
34.
	Set objRootDSE = GetObject("LDAP://RootDSE") 
35.
	 
36.
	varDNSDomain = objRootDSE.Get("defaultNamingContext") 
37.
	varBaseDN = "<LDAP://" & varDNSDomain & ">" 
38.
	 
39.
	' Filter for user objects. 
40.
	varFilter = "(&(objectCategory=person)(objectClass=user)(SamAccountName=" & strUserName & "))" 
41.
	 
42.
	' Construct the LDAP syntax query. 
43.
	adoCommand.CommandText = varBaseDN & ";" & varFilter & ";ADSPath;Subtree" 
44.
	adoCommand.Properties("Page Size") = 2 
45.
	adoCommand.Properties("Timeout") = 20 
46.
	adoCommand.Properties("Cache Results") = False 
47.
	Set adoRecordset = adoCommand.Execute 
48.
	adoRecordset.MoveFirst 
49.
 
50.
	If adoRecordset.RecordCount > 0 Then 
51.
		set FindAccount = GetObject(adoRecordset("ADSPath")) 
52.
	else 
53.
		set FindAccount = Nothing 
54.
	End If 
55.
	 
56.
	adoRecordset.Close 
57.
	adoConnection.Close 
58.
End Function
Grüße Uwe
Bitte warten ..
Mitglied: torben.dj
07.01.2015 um 12:05 Uhr
Danke für die Antwort.
Leider funktionieren die ActiveDirectory Befehle in diesem Fall nicht, da es sich bei dem
LDAP Adress-Server um ein altes Linux System handelt.
Bitte warten ..
Mitglied: colinardo
07.01.2015 um 12:12 Uhr
Zitat von torben.dj:
Leider funktionieren die ActiveDirectory Befehle in diesem Fall nicht, da es sich bei dem
LDAP Adress-Server um ein altes Linux System handelt.
lässt sich anpassen:
http://stackoverflow.com/questions/702998/connecting-to-openldap-server ...
Bitte warten ..
Mitglied: torben.dj
08.01.2015 um 08:21 Uhr
Manchmal sind es die kleinen Dinge, die den Unterschied machen.
Wenn ich einfach mal anstelle von LDAP nach OpenLDAP gesucht hätte, wäre ich schon schon schlauer.
Danke für den Link. Ich werde es mal versuchen.
Bitte warten ..
Ähnliche Inhalte
RedHat, CentOS, Fedora
2 DNS Server (bind) in verschiedenen Netzsegmenten verketten (3)

Frage von Vader666 zum Thema RedHat, CentOS, Fedora ...

Windows Tools
gelöst Suche Tool für Fehlersuche (6)

Frage von honeybee zum Thema Windows Tools ...

Outlook & Mail
Outlook 2016 - keine Ergebnisse in der Suche (11)

Frage von Corraggiouno zum Thema Outlook & Mail ...

Windows Tools
gelöst Suche Programm um Log auszuwerten + Mail notify (3)

Frage von NetzwerkDude zum Thema Windows Tools ...

Neue Wissensbeiträge
Google Android

Cyanogenmod alternative Downloadquelle

(2)

Tipp von Lochkartenstanzer zum Thema Google Android ...

Batch & Shell

Batch als Dienst bei Systemstart ohne Anmeldung ausführen

(5)

Tipp von tralveller zum Thema Batch & Shell ...

Sicherheits-Tools

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

(1)

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Statische Routen mit ISC-DHCP Server für Android Devices (22)

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

Server
gelöst Wie erkennen, dass nur deutsche IPs Zugang zu einer Website haben? (22)

Frage von Coreknabe zum Thema Server ...

Exchange Server
gelöst Migration Exchange 2007 zu 2013 - Public Folder teilweise weg (16)

Frage von Andy1987 zum Thema Exchange Server ...

Outlook & Mail
Outlook 2010 mit Exchange 2016 (15)

Frage von slansky zum Thema Outlook & Mail ...