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

ActiveDirectory Gruppen-User Zuordnung

Frage Entwicklung VB for Applications

Mitglied: 60376

60376 (Level 1)

22.01.2008, aktualisiert 25.01.2008, 9554 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 ..
Neuester Wissensbeitrag
Festplatten, SSD, Raid

12TB written pro SSD in 2 Jahren mit RAID5 auf Hyper-VServer

Erfahrungsbericht von Lochkartenstanzer zum Thema Festplatten, SSD, Raid ...

Ähnliche Inhalte
Windows Userverwaltung
gelöst Programmupdates ohne Adminrechte für die User einer Domäne (3)

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

Microsoft Office
gelöst Sharepoint Cached User Infos ? (4)

Frage von joehuaba zum Thema Microsoft Office ...

Netzwerkgrundlagen
IPsec - .conf und .secret erstellen aus Gruppe und User (16)

Frage von MaxMLe zum Thema Netzwerkgrundlagen ...

Windows Systemdateien
Keine Berechtigung trotz Domänen-Admin User (10)

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

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

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

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...