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, 5972 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 (4)

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
Drucker und Scanner

Samsung SL-M4025ND, firmware update und (kompatible) Tonerkassetten

(1)

Erfahrungsbericht von markus-1969 zum Thema Drucker und Scanner ...

Router & Routing

PfSense auf Supermicro Intel Xeon D-15x8 SoC Bare Bone

Tipp von Dobby zum Thema Router & Routing ...

Windows Server

Exchange 2010 auf Windows Server 2016 und AD

(2)

Tipp von Herbrich19 zum Thema Windows Server ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Brauche Hilfe: Mit (schnellem) WLAN Strecke überbrücken (19)

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

Basic
Programmierung von Windows Programmen (10)

Frage von Ghost108 zum Thema Basic ...

C und C++
Fehlendes verständiss von C und C++ (8)

Frage von zelamedia zum Thema C und C ...