| 

.NET C# Java Javascript Exception

4
Guten Tag,

ich habe folgendes Problem: Ich möchte alle AD-Gruppen, welche im Namen die Wörter "FS-NF-Projekte" enthalten, auslesen. Dazu sollen noch die beiden Felder managedby und info ausgelesen werden. Dies funktioniert leider nur zum Teil. Es werden nur die Gruppen ausgelesen, bei denen die beiden Felder auch gefüllt sind. Ich möchte aber auch die Gruppen ausgegeben bekommen, bei denen die Felder leer sind. Das Ergebnis soll in einem Datagridview dargestellt werden: Gruppe - Managedby - Info. Mein bisheriger Code sieht folgendermaßen aus:

Dim objADAM As DirectoryEntry ' Binding object.
Dim objGroupEntry As DirectoryEntry ' Group Results.
Dim objSearchADAM As DirectorySearcher ' Search object.
Dim objSearchResults As SearchResultCollection ' Results collection.
Dim strPath As String ' Binding path.

' OU die durchsucht werden soll
strPath = "LDAP://OU=Root,DC=nordsh,DC=local"

objSearchADAM = New DirectorySearcher(objADAM)
objSearchADAM.Filter = "(&(objectClass=group)(name=FS-NF-projekte*))"
objSearchADAM.SearchScope = SearchScope.Subtree
objSearchResults = objSearchADAM.FindAll()

' Gruppen auflisten
If objSearchResults.Count <> 0 Then
Dim objResult As SearchResult
For Each objResult In objSearchResults
objGroupEntry = objResult.GetDirectoryEntry()

For Each objManagedBy In objGroupEntry.Properties("managedby")

For Each objinfo In objGroupEntry.Properties("info")

DataGridView1.Rows.Add((objGroupEntry.Name), objManagedBy, objinfo)

Next objinfo

Next objManagedBy

Next objResult
Else
MsgBox("Gruppe nicht gefunden", vbCritical, "Fehler")
End If

Vielen Dank für die Hilfe.
News:
12.09.2016
juliansw 11 1
4 Antworten
1
Wenn ich mich recht entsinne, dann speichert das AD nur gefüllte Felder ab.
Sie müssen also zuerst alle Gruppen als "Dummy"zeilen im Grid anlegen und erst danach die beiden Eigenschaften für die Zeilen holen, für die die Eigenschaft gefüllt ist.
Am besten führen Sie Flags ein, die Anzeigen, dass eine Eigenschaft gefunden wurde.
For Each objResult In objSearchResults
bManagedFound = False
bInfoFound = False
For Each objManagedBy In objGroupEntry.Properties("managedby")
bManagedFound = True
For Each objinfo In objGroupEntry.Properties("info")
DataGridView1.Rows.Add((objGroupEntry.Name), objManagedBy, objinfo)
bInfoFound = True
Next objinfo
If Not bInfoFound Then
DataGridView1.Rows.Add((objGroupEntry.Name), objManagedBy, Nothing)
End If
Next objManagedBy
If Not bManagedFound Then
bInfoFound = False
For Each objinfo In objGroupEntry.Properties("info")
DataGridView1.Rows.Add((objGroupEntry.Name), Nothing, objinfo)
bInfoFound = True
Next objinfo
If Not bInfoFound Then
DataGridView1.Rows.Add((objGroupEntry.Name), Nothing, Nothing)
End If
End If
Next objResult

Je nach gefundenem Wert muss eine Zeile in das Grid eingefügt werden. Objekte, die nicht gefunden werden, werden mit Nothing übergeben.

Hoffe, es hilft weiter.
12.09.2016
edvservice 1,2k 6
0
Hallo,

vielen Dank für Ihren Hinweis. Dieser Lösungsansatz sieht sehr interessant aus. Ich habe gestern eine etwas andere Lösung gefunden, die ich hier kund tun möchte:

For Each objResult In objSearchResults
objGroupEntry = objResult.GetDirectoryEntry()
Dim objManagedBy = ""
Dim objinfo = ""
If objGroupEntry.Properties("managedby").Count > 0 Then
objManagedBy = objGroupEntry.Properties("managedby")(0).ToString
End If
If objGroupEntry.Properties("info").Count > 0 Then
objinfo = objGroupEntry.Properties("info")(0).ToString
End If
DataGridView1.Rows.Add(objGroupEntry.Name, objManagedBy, objinfo)
Next objResult


Ihre Möglichkeit möchte ich aber auch noch einmal testen.
13.09.2016
juliansw 11 1
0
Ihre Lösung ist ebenfalls korrekt, wenn die Eigenschaften nicht selbst wieder Auflistungen sind.
Meine Lösung würde auch in diesen Fällen funktionieren, da alle gespeicherten Kombinationen der Eigenschaften ausgegeben werden.

Produktiv würde ich noch etwas anders vorgehen:
Ich würde eine Wertobjekt (value object) schreiben, dass die Eigenschaften aufnimmt und so die Datengewinnung von der eigentlichen Anzeige trennen.
13.09.2016
edvservice 1,2k 6
0
Thanks a lot for the post. It has helped me get some nice ideas. I hope I will see some really good result soon.
ColdFusion Homework Help
26.09.2016

Stelle deine .net-Frage jetzt!