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, 9887 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 Server

User aus Gruppe auslesen mit Powershell

Frage von KEFHVDIWindows Server4 Kommentare

Hallo, ich benötige Hilfe. Ich bin leider nicht sehr begabt mit der Powershell. Ich muss alle User aus einer ...

Neue Wissensbeiträge
Ausbildung

Linux-Ausstieg in Niedersachsen - Windows statt Bugfix

Information von StefanKittel vor 7 StundenAusbildung8 Kommentare

Sind ja nur Steuergelder

Speicherkarten

Neuer Speicherkartentyp - zunächst nur für Huawei-Smartphones (künftig auch für Notebooks u. Tablets?)

Tipp von VGem-e vor 2 TagenSpeicherkarten2 Kommentare

Servus, als ob das "Chaos" i.S. Speicherkarten noch nicht groß genug wäre?! Evtl. kommt dieser neue Kartentyp bald auch ...

Sicherheit

Diverse D-Link-Router durch drei Schwachstellen kompromittierbar

Information von kgborn vor 2 TagenSicherheit

Hat jemand D-Link-Router in Verwendung? Einige Modelle sind sicherheitstechnisch offen wie ein Scheunentor. Äußerst unschöne Sache, aber nichts neues ...

Hardware

100.000 Mikrotik-Router ungefragt von Hacker abgesichert

Information von 7Gizmo7 vor 2 TagenHardware3 Kommentare

Hallo zusammen, da hier ja öfters mal von Mikrotik gesprochen wird. Trotz Updates klafft eine Sicherheitslücke in Hundertausenden Mikrotik-Routern. ...

Heiß diskutierte Inhalte
Off Topic
SysAdmin im öffentlichen Dienst - jemand Erfahrungen?
Frage von JohnDorianOff Topic22 Kommentare

Hallo zusammen, hat jemand Erfahrung wie es so ist als SysAdmin im öffentlichen Dienst (Landkreis) im Südwesten der Republik ...

TK-Netze & Geräte
Low budget TK-Anlage für KMU
Frage von HeinklugTK-Netze & Geräte16 Kommentare

Hallo Admins, ich bin auf der Suche nach eine kostengünstigen Telefonanlage für mein kleines Büro mit 4-5 Mitarbeitern. Dabei ...

SAN, NAS, DAS
Nas mit USB und LAN gleichzeitig zugreifen
gelöst Frage von MarkBeakerSAN, NAS, DAS16 Kommentare

Hallo zusammen, ich suche eine Art NAS, womit ich via LAN und USB zugreifen kann. Folgender Aufbau ist gedacht: ...

Vmware
Offene LDAP-Server in AS
gelöst Frage von obi-wan-kenobiVmware14 Kommentare

Hallo alle Miteinander, ich habe ein Problem, unsere VM-Ware Appliance (Version. 6.5.0.10000) ist scheinbar angreifbar. Wir haben eben die ...