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

VB.NET Von allen Mitgliedern einer Gruppe sAMAccountName ausgeben

Frage Entwicklung Visual Studio

Mitglied: Peacer

Peacer (Level 1) - Jetzt verbinden

18.03.2011 um 16:56 Uhr, 5949 Aufrufe, 1 Kommentar

Ich möchte eigentlich alle Mitglieder einer Gruppe auslesen. Das ist an sich auch kein Problem, ich hatte dafür auch schon eine ganz gute Lösung, allerdings konnte ich mir über den Zugriff auf das Group-Attribut "Member" nicht den "sAMAccountName" ausgeben lassen. Der wäre für mich aber ausschlaggebend damit ich mit dem Ergebnis weiterarbeiten kann.

Dann habe ich mir überlegt alle User "anzufassen" und festzustellen ob sich in dem User-Attribut "MemberOf" die Gruppe befindet die ich in textBox18 eingegeben habe.

Mein Code schaut folgendermaßen aus, aber er funktioniert komischerweise nicht mit allen Gruppen und dauert natürlich ein paar sekunden länger. Hat jemand einen Verbesserungsvorschlag? Oder gar eine ganz neue Idee?

LG Peacer



01.
Public Function GetGroupMember(ByVal domain As String, ByVal username As String, ByVal password As String, Optional ByRef exeption As Exception = Nothing) As Collections.Generic.List(Of String) 
02.
	 
03.
	Dim ADEntry As New DirectoryServices.DirectoryEntry("LDAP://" & domain, username, password) 
04.
    	Dim objSearch As New System.DirectoryServices.DirectorySearcher(ADEntry) 
05.
 
06.
    	Dim oResults As DirectoryServices.SearchResultCollection 
07.
    	Dim oResult As DirectoryServices.SearchResult 
08.
		 
09.
		Dim colEntry As New Collections.Generic.List(Of String) 
10.
		Try 
11.
    		objSearch.Filter = "(&(objectCategory=person)(objectClass=user))" 
12.
   			oResults = objSearch.FindAll 
13.
			objsearch.PropertiesToLoad.Add("MemberOf") 
14.
   		 
15.
   			For Each oResult In oResults 
16.
   				For i As Integer = 0 To oResult.Properties("MemberOf").Count - 1 
17.
   					Dim sProp As String = oResult.Properties("MemberOf")(i) 
18.
   					Dim s2Prop As String = sProp.Substring(3, sProp.IndexOf(",") - 3) 
19.
   					If s2Prop.ToLower = textBox18.Text.ToLower Then 
20.
   						Dim UsrsAM As String = oResult.GetDirectoryEntry.Properties("sAMAccountName").Value 
21.
   						Dim UsrCN As String = oResult.GetDirectoryEntry.Properties("cn").Value 
22.
   						Dim UsrCNsAM As String = UsrsAM & ", " & UsrCN 
23.
   						colEntry.Add(UsrCNsAM) 
24.
   						'Else 
25.
   						'colEntry.Add("leer " & s2Prop) 
26.
   					End If 
27.
   				Next 
28.
        		'Console.WriteLine(oResult.GetDirectoryEntry.Properties("sAMAccountName").Value) 
29.
    		Next 
30.
 
31.
		Catch ex As Exception 
32.
			exeption = ex 
33.
		 
34.
		Finally 
35.
			objsearch.Dispose() 
36.
		End Try 
37.
		Return colEntry 
38.
		 
39.
	End Function 
40.
 
Mitglied: Peacer
21.03.2011 um 09:59 Uhr
Also ich kann mir die User mit folgender Function folgendermaßen ausgeben lassen.

Function:

01.
Public Function GetGroupMember(ByVal domain As String, ByVal username As String, ByVal password As String, Optional ByRef exeption As Exception = Nothing) As Collections.Generic.List(Of String) 
02.
Dim searcher As DirectorySearcher = Nothing 
03.
		Dim colEntry As New Collections.Generic.List(Of String) 
04.
		 
05.
		Try 
06.
			searcher = New DirectorySearcher(New DirectoryEntry("LDAP://" & domain, username, password)) 
07.
			searcher.Filter = String.Concat("(&(objectClass=Group) (samAccountName=", textBox18.Text, "))") 
08.
			searcher.PropertiesToLoad.Add("Member") 
09.
			 
10.
			Dim result As SearchResult = searcher.FindOne 
11.
			For i As Integer = 0 To result.Properties("Member").Count - 1 
12.
				Dim sProp As String = result.Properties("Member")(i) 
13.
				colEntry.Add(sProp) 
14.
			Next 
15.
			 
16.
		Catch ex As Exception 
17.
			exeption = ex 
18.
			 
19.
		Finally 
20.
			searcher.Dispose() 
21.
		End Try 
22.
		Return colEntry 
23.
End Function
Output:

01.
CN=Nachname\, Vorname,OU=User,OU=abc,DC=domain,DC=com
Kann ich mit diesen Daten pro User eine LDAP Abfrage starten womit ich dann den "sAMAccountName" ausgeben kann? Ist das sinnvoll?

Zur Info: eine Group hat bei uns bis zu 1200 Mitglieder...

Danke Peacer
Bitte warten ..
Ähnliche Inhalte
VB for Applications
VB.net Combobox databinding langsam (3)

Frage von ForgottenRealm zum Thema VB for Applications ...

Visual Studio
gelöst Vb.net: Word-Doc seitenweise durchsuchen nach Textmarke (7)

Frage von ahstax zum Thema Visual Studio ...

Basic
gelöst Mit vb.net PDF in Word-Dok einfügen (10)

Frage von ahstax zum Thema Basic ...

Visual Studio
gelöst VB.Net - Hilfe bei Regex (8)

Frage von emeriks zum Thema Visual Studio ...

Neue Wissensbeiträge
Peripheriegeräte

Was beachten bei der Wahl einer USV Anlage im Serverschrank

(5)

Tipp von zetboxit zum Thema Peripheriegeräte ...

Windows 10

Das Windows 10 Creators Update ist auf dem Weg

(5)

Anleitung von BassFishFox zum Thema Windows 10 ...

Administrator.de Feedback

Tipp: Ungelöste Fragen ohne Antwort in Tickeransicht farblich hinterlegen

Tipp von pattern zum Thema Administrator.de Feedback ...

Viren und Trojaner

Neue Magazin Ausgabe: Malware und Angriffe abwehren

Information von Frank zum Thema Viren und Trojaner ...

Heiß diskutierte Inhalte
Windows Systemdateien
Warum System auf "C:" (29)

Frage von DzumoPRO zum Thema Windows Systemdateien ...

LAN, WAN, Wireless
Cisco SG200: Auf bestimmtem vLAN bestimmte TCP-Ports sperren (19)

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

Windows Server
gelöst Update BackupExec 2015 auf 2016 führt zu SQL-Server Problem (16)

Frage von montylein1981 zum Thema Windows Server ...

Batch & Shell
gelöst Batch um Benutzer aus Sitzung abzumelden (15)

Frage von zeroblue2005 zum Thema Batch & Shell ...