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
GELÖST

User im AD suchen

Frage Entwicklung VB for Applications

Mitglied: skid

skid (Level 1) - Jetzt verbinden

25.09.2006, aktualisiert 27.09.2006, 8301 Aufrufe, 9 Kommentare

Hallo,

bin auf der Suche nach einer Möglichkeit mit VB im AD einen User zu finden wenn ich vorher den Anmeldenamen mitgebe.

Das ganze soll dazu dienen die Terminal Server Eigenschaften eines Benutzers auszulesen.

Ich gebe dazu den Anmeldenamen ein und das Skript soll mir den User im gesamten AD suchen und die TS-Eigenschaften ausgeben.

Habe es bisher geschafft mit:

01.
Set objUser = GetObject("LDAP://cn=" & struser &" ,ou=Useranlage,ou=Anwender,dc=meine,dc=domaene,dc=de")
struser = Username

Wobei bei der Lösung der Pfad zum User bereits vorgegeben ist.
Gibt es da evtl. eine Möglichkeit mit subtree oder so ?

Gruss
SKID
Mitglied: Biber
25.09.2006 um 22:11 Uhr
Moin skid,
ich bin da auch nur Laie, aber IMHO geht es nur über ADO-Datenbankabfrage.
Aber ich lasse mir gern einen kürzeren Weg zeigen..

Wenn Du den Accountnamen kennst, dann sollte es so gehen:
01.
'---------snipp GetAnUser.vbs 
02.
Set objConnection = CreateObject("ADODB.Connection") 
03.
Set objCommand    = CreateObject("ADODB.Command") 
04.
Set objRootDSE = GetObject("LDAP://RootDSE") 
05.
strDNSDomain = objRootDSE.Get("defaultNamingContext") 
06.
objConnection.Open "Provider=ADsDSOObject;" 
07.
samAccountname = wscript.arguments(0) 
08.
objCommand.ActiveConnection = objConnection 
09.
objCommand.CommandText = "<LDAP://" & strDNSDomain & ">;(&(objectCategory=User)(samAccountName=" & samAccountName & "));distinguishedName;subtree" 
10.
                          
11.
Set objRecordset = objCommand.Execute 
12.
If objRecordset.RecordCount = 1 Then     
13.
    wscript.echo objRecordSet.fields("distinguishedName") 
14.
end if 
15.
'---------snipp GetAnUser.vbs
...wobei ich alle Schnörkel weggelassen habe.
Ein Accountname als Argument wird erwartet. Keine Fehlerbehandlung.
Beispiel:
01.
>cscript //nologo getAnUser.vbs Biber03 
02.
CN=BIBER03,CN=Users,DC=bla,DC=blubb
Gruß
Biber
Bitte warten ..
Mitglied: skid
26.09.2006 um 09:02 Uhr
Moin Biber,

dank Dir für die schnelle Antwort und Lösung.

ich bekomme jetzt zwar den distinguishedName ausgegeben aber wie kann ich jetzt auf einzelne Objekte des Users zugreifen ?

So wie ich es eigentlich vorhatte mit

01.
Set objUser = GetObject("LDAP://cn=" & struser &" ,ou=Useranlage,ou=Anwender,dc=meine,dc=domaene,dc=de")
hätte ich hergehen können und mit

01.
MsgBox "Terminal Services Home Drive: " & _ 
02.
    objUser.TerminalServicesHomeDrive 
03.
MsgBox "Terminal Services Profile Path: " & _ 
04.
    objUser.TerminalServicesProfilePath
mir die einzelnen Objekte einzeln anzeigen können.

Aber wie funktioniert das mit der ADO-Datenbankabfrage ?

Gruss
SKID
Bitte warten ..
Mitglied: Biber
26.09.2006 um 09:44 Uhr
Tja, skid,
reicht es dafür nicht, wenn Du die Properties, die Du abfragen/auswerten willst, in die Command.Text-Anweisung mit einbaust?

objCommand.CommandText = "<LDAP://" & strDNSDomain & ">;_
(&(objectCategory=User)(samAccountName=" & samAccountName & ")); _
distinguishedName,TerminalServicesHomeDrive, TerminalServicesProfilePath;subtree"

Wie gesagt, ich bin da auch Laie und was ich wirklich gut kann, ist Kochen...

Gruß
Biber
Bitte warten ..
Mitglied: skid
26.09.2006 um 10:24 Uhr
Nun ja......

Das habe ich schon probiert - funktioniert aber nur zum Teil.

Ich kann mir z.B. so den normalen Profilpfad anzeigen lassen aber
nicht die TerminalServer Einträge.

Warum das nicht geht weiß ich aber auch nicht.
Bekomme die Fehlermeldung

Provider: Unbekannter Fehler

Diese Einträge müssen im System wohl irgendwie anders Behandelt werden als die anderen ?!

Wie - Kochen kannst Du auch ??

Gruss
SKID
Bitte warten ..
Mitglied: Biber
26.09.2006 um 19:01 Uhr
Hmm, skid,

so was lässt mir ja auch keine Ruhe... habe mich da ein wenig eingelesen.

Es ist in der Tat so, dass unterschiedliche Informationen über die unterschiedlichen ADS-Interfaces bzw. Provider sicht- und bearbeitbar sind.

Punkt.

Heißt zum Beispiel: Die Antwort auf Deine Teilfrage: "Kann ich irgendwie an den Pfad des Users kommen, wenn ich nur den Accountnamen weiß?" ...
.... diese Frage war schon von mir richtig beantwortet (allerdings ohne selbst alle Hintergründe zu kennen).

Für diesen Zweck kann ich mir ein objUser über den Provider ADsDSOObject holen. Dieses Object hat auch Eigenschaften, die ich auswerten und auch neu setzen kann - aber ist nicht identisch mit dem objUser, das ich über das andere Interface, über den vollständigen Userpfad mit OU und DC bekomme.
Diesen Unterschied kannst Du auch über GUI-Tools nachvollziehen.

Das "schmalbrüstigere" M$-Tool nennt sich auf ausländisch "Active Directory Users and Computers" und das umfassendere "ADSIEdit.exe". Sollten beide beim 2003Server dabei sein.

Der langen Schreibe kurzer Sinn:
-Wenn Du "nur" den Account weißt: der ist in der Domäne eindeutig. Also lässt der sich wie oben von mir skizziert als ein Datensatz rausfieseln - so dass Du den DistinguishedName rauslutschen kannst.

Mit diesem wiederum musst Du dann Dein "vollständiges" User-Object holen, also mit frisch gelesenen OU und DC-Infos nochmal
01.
Set objUser = GetObject("LDAP://cn=" & struser &" ,ou=" & TeilstringAusDistinguishedName, x, y) & ", dc=" & _  
02.
TeilstringAusDistinguishedName, i, j) & ", dc=" .....)
Nur bei diesem UserObject kannst Du diese TerminalServices-Attribute oder auch den DisplayName ändern (das zweite war auch neulich hier gefragt worden).

Gruß
Biber
P.S. Ja, kochen kann ich auch. Dauert aber meist genauso lange...
Bitte warten ..
Mitglied: skid
27.09.2006 um 09:28 Uhr
Moin Biber,

ja, das ist schon Übel mit den verschiedenen Providern und dem ganzen hin und her.

Werde es mal mit dem Bsp. von oben versuchen meine Daten rauszubekommen.

Nur weiß ich im Moment noch nicht was Du meinst mit:
01.
ou=" & TeilstringAusDistinguishedName, x, y
und
01.
ou=" TeilstringAusDistinguishedName, i, j
Gruss
SKID
Bitte warten ..
Mitglied: Biber
27.09.2006 um 09:39 Uhr
Moin skid,
ich meinte, dass Du Dir die Infos aus
.distinguishedName = CN=BIBER03,CN=Users,DC=bla,DC=blubb
per Substring-Funktion ausliest und für die "zweite" UserObject-Abfrage benutzt.

Gruß
Biber
Bitte warten ..
Mitglied: skid
27.09.2006 um 11:10 Uhr
Hi Biber,

kaum zu glauben aber es funktioniert

Naja, da muss man halt zwischen den unterschiedlichen ADS-Interfaces bzw. Provider hin und her springen.

Jetzt haben wir wieder mal was dazugelernt

Danke für die Hilfe !


Gruss
SKID
Bitte warten ..
Mitglied: Biber
27.09.2006 um 17:14 Uhr
Jetzt haben wir wieder mal was dazugelernt..
Jepp, skid,
ich jedenfalls auch

Gruß
Biber
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
gelöst User und AD Gruppe finden - wie das Pferd aufzäumen (5)

Frage von H41mSh1C0R zum Thema Batch & Shell ...

Windows Server
gelöst AD-User einer AD-Gruppe auslesen und in ein File schreiben (15)

Frage von Estefania zum Thema Windows Server ...

Batch & Shell
gelöst AD-Felder für User mittels Powershell befüllen aus CSV-Datei (2)

Frage von Alex94G zum Thema Batch & Shell ...

Windows Server
gelöst Wie AD User sauber löschen? (34)

Frage von McLion zum Thema Windows Server ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...