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

Mitglied: 60376

60376 (Level 1)

22.01.2008, aktualisiert 25.01.2008, 9855 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! ...

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

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 ...

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
Humor (lol)
(Part num your Hacked phone. +XX XXXXXX5200)
Erfahrungsbericht von Henere vor 2 TagenHumor (lol)5 Kommentare

Mein Handy hat aber ne ganz andere Endnummer. Muss ich mir jetzt Sorgen machen ? :-) Vielleicht betrifft es ...

Exchange Server

Letztes Update für Exchange 2016 CU9 war in gewisser Weise destruktiv

Erfahrungsbericht von DerWoWusste vor 2 TagenExchange Server7 Kommentare

Kurzer Erfahrungsbericht zu Exchange2016-KB4340731-x64 Der Exchangeserver hat wie gewöhnlich versucht, es in der Nacht automatisch zu installieren - abgesehen ...

Erkennung und -Abwehr

Neue Sicherheitslücke Foreshadow (L1TF) gefährdet fast alle Intel-Prozessoren

Information von Frank vor 3 TagenErkennung und -Abwehr3 Kommentare

Eine neue Sicherheitslücke, genannt Foreshadow (alias L1TF) wurde auf der Usenix Security 18 von einem Team internationaler Experten veröffentlicht. ...

Vmware
VMware Updates gegen L1 Lücke
Information von sabines vor 3 TagenVmware

Für die Vmware Produkte vCenter Server, ESXi, Workstation und Fusion stehe Updates bereit um die L1 Lücke zu schließen. ...

Heiß diskutierte Inhalte
Netzwerke
Netzwerk-Architektur mit VLANs
Frage von niLuxxNetzwerke37 Kommentare

Liebe Community, Ich hätte eine kurze Frage an euch. Ich werde in Kürze das Netzwerk unserer (sehr) kleinen Firma ...

Netzwerke
SSH - Wieso werde ich nach VPN Verbindung rausgeschmissen?
Frage von VernoxVernaxNetzwerke10 Kommentare

Hallo, ich habe es endlich geschafft mein Handy mit einer VPN Verbindung an meinen Router anzuschließen. Nach der Login ...

Microsoft
Ist es möglich ein reines Volume C Datenbackup in eine Hyper-V VM zu konvertieren?
Frage von Frank84Microsoft10 Kommentare

Hallo zusammen, ich habe hier ein Backup vorliegen, das ausschließlich das komplette C:\ Volume eines physischen Server 2012 enthält. ...

Windows Server
Freigaben per Default nur für Domänen-Benutzer
Frage von tierwoWindows Server8 Kommentare

Hallo gibt es eine Möglichkeit, einen Server 2016 so zu konfigurieren (z.B. per GPO), dass Freigaben die erstellt werden ...