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, 9902 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! ...

Microsoft

ActiveDirectory Benutzerspeicherplatz

gelöst Frage von tomolpiMicrosoft2 Kommentare

Hi, ich kann ja über den Gruppenrichtlineneditor unter Default Domain Policy - Benutzerkonfiguration -> Administrative Vorlagen -> system -> ...

XML

Zuordnung XML

gelöst Frage von FRANHEXML2 Kommentare

Hallo Zusammen, ich hätte ein etwas größeres Problem und wäre unheimlich dankbar, wenn ich da eure Unterstützung bekommen könnte. ...

Windows Server

ActiveDirectory Benachrichtigung

Frage von VerwirrterUserWindows Server4 Kommentare

Hallo zusammen, ich habe bei einem Geschäftspartner mitbekommen, dass es möglic sei eine Benachrichtigung zu erhalten wenn ein Benutzer ...

Neue Wissensbeiträge
iOS
WatchChat für Whatsapp
Tipp von Criemo vor 2 TageniOS3 Kommentare

Ziemlich coole App für WhatsApp User in Verbindung mit der Apple Watch. Gibts für iOS sowohl als auch für ...

iOS
IOS hat nen Cursor !!!
Tipp von Criemo vor 2 TageniOS5 Kommentare

Nette Funktion im iOS. iPhone-Mauszeiger aktivieren „Nichts ist nerviger, als bei einem Tippfehler zu versuchen, den iOS-Cursor an die ...

Off Topic
Avengers 4: Endgame - Erster Trailer
Information von Frank vor 4 TagenOff Topic2 Kommentare

Ich weiß es ist Off Topic, aber ich freue mich auf diesen Film und vielleicht geht es anderen hier ...

Webbrowser
Microsoft bestätigt Edge mit Chromium-Kern
Information von Frank vor 5 TagenWebbrowser5 Kommentare

Microsoft hat nun in seinem Blog bestätigt, dass die nächste Edge Version kein EdgeHTML mehr für die Darstellung benutzen ...

Heiß diskutierte Inhalte
Windows Netzwerk
Kerio. Kann keine Mails empfangen aber senden. Wer ist schuld. Kerio oder Windows domäne?
gelöst Frage von frosch2Windows Netzwerk33 Kommentare

Hallo, es existiert ein Problem bei uns mit dem mailen. Alle bestehenden Nutzer können mailen. Raus wie rein. Neuen ...

Hosting & Housing
VMware VM mit über 1TB RAM für S4HANA
gelöst Frage von Leo-leHosting & Housing24 Kommentare

Hallo zusammen, wer hat Erfahrng und kann mir einen Tipp zum sizing von S4HANA Systemen geben? Wir möchten, zunächst ...

LAN, WAN, Wireless
WLAN und Ausmessung - Eine Glaubensfrage?
Frage von ptr2brainLAN, WAN, Wireless23 Kommentare

Liebe Experten, als Sys-Admin habe ich mir schon öfter die Frage gestellt, ob es sich beim Thema WLAN und ...

Virtualisierung
Gebrauchte Server Hardware als Virtualisierungs-"Spielwiese"?
Frage von NixVerstehenVirtualisierung19 Kommentare

Einen wunderschönen guten Morgen zusammen, ich möchte mich gerne etwas tiefer mit dem Thema Virtualisierung beschäftigen und dazu ein ...