Top-Themen

Aktuelle Themen (A bis Z)

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

ActiveDirectory Gruppen-User Zuordnung

Frage Entwicklung VB for Applications

Mitglied: 60376

60376 (Level 1)

22.01.2008, aktualisiert 25.01.2008, 9744 Aufrufe, 9 Kommentare

Hallo Leute, bin sehr unerfahren was VB-Programmierung angeht und habe deshalb eine (vielleicht sehr dumme) Frage.

Und zwar brauch ich ein Script, welches aus dem ActiveDirectory die Gruppen und User ausliest und Datenbankmäßig ausgibt, also quasi
"Gruppe1,User1"
"Gruppe1,User2"
"Gruppe2,User1"
"Gruppe2,User3"

usw...

von VB habich leider nicht viel Ahnung, deshalb dachte ich ihr könnt mir vielleicht helfen?

Benutzt werden sollen die Befehle dsquery und dsget, aber vielleicht geht das auch anders?

Danke schonmal
Mitglied: Tohla
22.01.2008 um 17:04 Uhr
Moin,

ich denke CSVDE könte da helfen.

googel mal nach CSVDE, damit kanst du aus und in die AD Lesen oder Schreiben.
Wird dann als CSV rausgegeben.
Das holst du dir dann in Excel

damit hast du dann schon was in der hand.

Tohla
Bitte warten ..
Mitglied: bastla
22.01.2008 um 18:18 Uhr
Hallo dnbCommander!

Eine VBS-Lösung (unter starker Anlehnung an diese "Scripting Guy"-Kolumne) könnte so aussehen:
01.
Const strDomain = "firma.de" 
02.
Const strListFile = "D:\Gruppenliste.txt" 
03.
Const strDelim = "," 
04.
 
05.
Set objListFile = CreateObject("Scripting.FileSystemObject").OpenTextFile(strListFile, 2, True) 
06.
Set colGroups = GetObject("WinNT://" & strDomain) 
07.
colGroups.Filter = Array("Group") 
08.
For Each objGroup In colGroups 
09.
    strGroup = objGroup.Name  
10.
    For Each objUser in objGroup.Members 
11.
		strUserName = objUser.Name 
12.
		If Right(strUserName, 1) <> "$" Then 
13.
			objListFile.WriteLine Chr(34) & strGroup & strDelim & objUser.Name & Chr(34) 
14.
		End If 
15.
    Next 
16.
Next 
17.
objListFile.Close
Könntest Du dann bitte einen Deiner Beiträge zu diesem Thema (mit dem Hinweis auf den anderen Beitrag) als "erledigt" kennzeichnen?

Grüße
bastla
Bitte warten ..
Mitglied: 60376
23.01.2008 um 08:12 Uhr
okay danke funktioniert soweit schonmal =) dankeschön


und...wodran ich grad verzweifel... ich muss für bestimmte OU's nur die gruppen/user auslesen
wie kann ich das bestimmen, das er nich die ganze domäne ausliest? ldap pfand angeben?
wär super wenn du nochmal helfen könntest
Bitte warten ..
Mitglied: bastla
23.01.2008 um 14:55 Uhr
Hallo dnbCommander!

Ersetze die Zeile
01.
Set colGroups = GetObject("WinNT://" & strDomain)
durch eine passende "LDAP"-Angabe:
01.
Set colGroups = GetObject("LDAP://ou=bestimmteOU,dc=deinedomain,dc=local")
Für die Abfrage der User wäre dann noch der Filter auf "User" zu setzen.

Ansonsten sieh Dir vielleicht auch noch folgende Artikel an: Die Suche in Active Directory mit Skripten (Teil 1) sowie dessen Teil 2.

Grüße
bastla
Bitte warten ..
Mitglied: 60376
23.01.2008 um 15:01 Uhr
genau das hatte ich probiert, braucht aber ewig zum schauen und dann kommt nen fehler

EDIT:
b zw, gibts die OU nicht sagter das sofort, gibts die OU prüfter zwar aber schreibt nix in die datei
Bitte warten ..
Mitglied: bastla
23.01.2008 um 15:55 Uhr
Hallo dnbCommander!

gibts die OU prüfter zwar aber schreibt nix in die datei
Kann ich nicht nachvollziehen - es sollte sogar zuviel in die Datei geschrieben werden, da die jeweilgen Namen als RID in der Schreibweise "CN=Name" zurückgegeben werden. Abhilfe schafft dafür folgende Änderung:
01.
strGroup = Replace(objGroup.Name, "CN=", "")
bzw
01.
strUserName = Replace(objUser.Name, "CN=", "")
Vielleicht zur Sicherheit noch der Hinweis, dass Gruppen nur ausgegeben werden, wenn sie auch Mitglieder haben. Um das zu ändern:
01.
... 
02.
For Each objGroup In colGroups 
03.
    strGroup = Replace(objGroup.Name, "CN=", "") 
04.
	If objGroup.Members.Count <> 0 Then 
05.
		For Each objUser in objGroup.Members 
06.
			strUserName = Replace(objUser.Name, "CN=", "") 
07.
			If Right(strUserName, 1) <> "$" Then 
08.
				objListFile.WriteLine Chr(34) & strGroup & strDelim & strUserName & Chr(34) 
09.
			End If 
10.
		Next 
11.
	Else 
12.
		objListFile.WriteLine Chr(34) & strGroup & strDelim & Chr(34)		 
13.
	End If 
14.
Next 
15.
objListFile.Close
Falls das bei Dir nicht klappt, könntest Du immer noch die in den verlinkten Artikeln beschriebene Vorgangsweise versuchen.

Grüße
bastla
Bitte warten ..
Mitglied: 60376
24.01.2008 um 10:45 Uhr
super, funktioniert soweit

aaaaber wie immer gibts noch probleme wo ich nicht hinterkomme, wär super wenn du da nochmal drüberschauen könntest.

Soweit funktioniert das programm ja. Aber mal angemommen die struktur ist wiefolgt aufgebaut:
OU Administration
- OU Gruppen
- OU User
CN Bla
CN Blub

OU ...
CN..
OU...

Wenn ich aber die OU Administration angebe, passiert natürlich nichts weil er in keine unterordner geht, wie krieg ich ds nun mit den unterordnern hin falls es welche gibt?

und, wie mach ich das, das auch nicht nur eine OU oder CN durchsucht wird, sondern sagen wir mal 3 oder mehr bestimmte?
Bitte warten ..
Mitglied: bastla
25.01.2008 um 00:35 Uhr
Hallo dnbCommander!

Damit wären wir bei der SQL-Abfrage-Variante angelangt:
01.
On Error Resume Next 
02.
 
03.
Const strListFile = "D:\Gruppenliste.txt" 
04.
Const strDelim = "," 
05.
 
06.
aOU = Array( _ 
07.
	"ou=eineOU,dc=deinedomain,dc=local", _ 
08.
	"ou=eineandereOU,dc=deinedomain,dc=local", _ 
09.
	"ou=dieletzteOU,dc=deinedomain,dc=local" _ 
10.
11.
 
12.
Const ADS_SCOPE_SUBTREE = 2	 
13.
Set objListFile = CreateObject("Scripting.FileSystemObject").OpenTextFile(strListFile, 2, True) 
14.
 
15.
For Each OU In aOU 
16.
	ListGroup OU 
17.
Next 
18.
 
19.
objListFile.Close 
20.
' ####### Ende Hauptprogramm ####### 
21.
 
22.
 
23.
Sub ListGroup(strOU) 
24.
Set objConnection = CreateObject("ADODB.Connection") 
25.
Set objCommand = CreateObject("ADODB.Command") 
26.
objConnection.Provider = "ADsDSOObject" 
27.
objConnection.Open "Active Directory Provider" 
28.
Set objCommand.ActiveConnection = objConnection 
29.
 
30.
objCommand.Properties("Page Size") = 1000 
31.
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE  
32.
objCommand.Properties("Sort On") = "Name" 
33.
 
34.
objCommand.CommandText = _ 
35.
    "SELECT Name, Member FROM 'LDAP://" & strOU & "' WHERE objectCategory='group'"   
36.
Set objRecordSet = objCommand.Execute 
37.
 
38.
If objRecordSet.RecordCount > 0 Then 
39.
	objRecordSet.MoveFirst 
40.
	Do Until objRecordSet.EOF 
41.
		strGroupName = objRecordSet.Fields("Name").Value 
42.
		If IsNull(objRecordSet.Fields("Member").Value) Then 
43.
			objListFile.WriteLine Chr(34) & strGroupName & strDelim & Chr(34) 		 
44.
		Else 
45.
			aUsers = objRecordSet.Fields("Member").Value 
46.
			For Each strUserCN In aUsers 
47.
				Set objUser = GetObject("LDAP://" & strUserCN) 
48.
				strUserName = objUser.sAMAccountName 
49.
				objListFile.WriteLine Chr(34) & strGroupName & strDelim & strUserName & Chr(34)  
50.
			Next 
51.
		End If 
52.
		objRecordSet.MoveNext 
53.
	Loop 
54.
End If 
55.
End Sub
Bitte beachten: Nach der letzten im Array angegebenen OU ist kein Komma zu setzen.

Wo Du Details zur Funktionsweise nachlesen könntest, weißt Du ja inzwischen ...

Grüße
bastla
Bitte warten ..
Mitglied: 60376
25.01.2008 um 08:47 Uhr
geeeenial...dankeschön hast mir sehr geholfen!
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
ActiveDirectory - Alle User mit Ablaufdatum herausfiltern
gelöst Frage von HeuristikerBatch & Shell3 Kommentare

Hallo Leute! Bin in PowerShell noch nicht der Größus und es bedarf hin und wieder der tatkräftigen Unterstützung euererseits! ...

Windows Userverwaltung
Benutzer mit bestimmten Attributen aus ActiveDirectory auslesen und einer Gruppe hinzufügen
gelöst Frage von roland123Windows Userverwaltung3 Kommentare

Guten Abend, wir haben bei unseren Benutzern im ADProfil deren Abteilungen hinterlegt. Nun möchte ich gerne, dass die Benutzer ...

Apache Server
Apache 2 LDAP Gruppen Zuordnung Funktioniert nicht
gelöst Frage von Phill93Apache Server2 Kommentare

Hallo, habe ein kleines Problem mit der Apache Authentifizierung. Der Admin Bereich eines Server soll über LDAP geschützt werden. ...

Windows Userverwaltung
AD Gruppen User auslesen
Frage von pgWindows Userverwaltung1 Kommentar

Guten Tag, ich bin auf der Suche nach einem Programm welches mit die User eines AD ausliest und mir ...

Neue Wissensbeiträge
Apple

IOS 11.2.1 stopft HomeKit-Remote-Lücke

Tipp von BassFishFox vor 50 MinutenApple

Das Update für iPhone, iPad und Apple TV soll die Fernsteuerung von Smart-Home-Geräten wieder in vollem Umfang ermöglichen. Apple ...

Windows 10

Windows 10 v1709 EN murkst bei den Regionseinstellungen

Tipp von DerWoWusste vor 5 StundenWindows 10

Dieser kurze Tipp richtet sich an den kleinen Personenkreis, der Win10 v1709 EN-US frisch installiert und dabei die englische ...

Webbrowser

Kein Ton bei Firefox Quantum über RDP

Tipp von Moddry vor 6 StundenWebbrowser

Hallo Kollegen! Hatte das Problem, dass der neue Firefox bei mir auf der Kiste keinen Ton hat, wenn ich ...

Internet

EU-DSGVO: WHOIS soll weniger Informationen liefern

Information von sabines vor 18 StundenInternet4 Kommentare

Wegen der europäische Datenschutzgrundverordnung stehen die Prozesse um die Registrierung von Domains auf dem Prüfstand. Sollte die Forderungen umgesetzt ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Von rj11 auf rj45
Frage von jensgebkenLAN, WAN, Wireless19 Kommentare

Hallo Gemeinschaft, könnt ihr mir vielleicht bei der anfertigung eines Kabels helfen - habe ein rj 11 stecker und ...

Netzwerkmanagement
Firefox Profieles im Roaming
gelöst Frage von Hendrik2586Netzwerkmanagement17 Kommentare

Hallo liebe Leute. :) Ich hab da ein kleines Problem, welches anscheinend nicht unbekannt ist. Wir nutzen hier in ...

LAN, WAN, Wireless
Häufig Probleme beim Anmelden in WLAN
Frage von mabue88LAN, WAN, Wireless15 Kommentare

Hallo zusammen, in einem Netzwerk gibt es relativ häufig (1-2 mal pro Woche) Probleme mit der WLAN-Verbindung. Zunächst mal ...

Windows Server
Remotesteuerung der Sitzung (Kennung XX) fehlgeschlagen
gelöst Frage von Stefan91Windows Server14 Kommentare

Hallo Zusammen, seit kurzem bekomme ich oben genannte Fehlermeldung, wenn ich versuche eine Remotesitzung über den Taskmanager fernzusteuern (Rechtsklick ...