peacer
Goto Top

VB.NET Wie kann ich mir ein Output ausgeben lassen?

Ich habe mir aus dem Netz eine Function geholt welche mir per LDAP alle Gruppen eines bestimmten Domainusers auflistet.

Allerdings habe ich hier das Problem das ich nicht begreife wie ich mir das Ergebnis in eine text-/list-/groupbox oder datagrid pipen kann.


Hier die Function:

Imports System.DirectoryServices
Imports System.DirectoryServices.ActiveDirectory


    Public Function GetUserMemberOf(ByVal domain As String, ByVal username As String, ByVal password As String, Optional ByRef exeption As Exception = Nothing) As Collections.Generic.List(Of String)
        Dim searcher As DirectorySearcher = Nothing
        Dim colEntry As New Collections.Generic.List(Of String)

        Try
            searcher = New DirectorySearcher(New DirectoryEntry("LDAP://" & domain, username, password))  
            searcher.Filter = String.Concat("(&(objectClass=User) (sAMAccountName=", username, "))")  
            searcher.PropertiesToLoad.Add("MemberOf")  

            Dim result As SearchResult = searcher.FindOne
            For i As Integer = 0 To result.Properties("MemberOf").Count - 1  
                Dim sProp As String = result.Properties("MemberOf")(i)  
                colEntry.Add(sProp.Substring(3, sProp.IndexOf(",") - 3))  
            Next

        Catch ex As Exception
            exeption = ex

        Finally
            searcher.Dispose()
        End Try

        Return colEntry

    End Function

Meinen function rufe ich folgendermaßen auf:

GetUserMemberOf("domain.de", Manfred, 12345)  

Danke für Tipps

LG Peacer

Content-ID: 162491

Url: https://administrator.de/contentid/162491

Ausgedruckt am: 25.11.2024 um 10:11 Uhr

mathe172
mathe172 11.03.2011 um 15:48:49 Uhr
Goto Top
Hallo Peacer!

Den Rückgabewert einer Funktion kannst du wie eine Variable behandeln. Also etwa:
Dim Rückgabewert as Collections.Generic.List(Of String) =GetUserMemberOf("domain.de", Manfred, 12345)  
In eine Datei schreiben müsste dann so gehen:
Dim Rückgabewert as Collections.Generic.List(Of String) =GetUserMemberOf("domain.de", Manfred, 12345)  
Dim sw as new StreamWriter("AusgabeDatei.txt")  
For each Zeile as String in Rückgabewert
   sw.writeline(Zeile)
Next
oder in der Kurzform:
Dim sw as new StreamWriter("AusgabeDatei.txt")  
For each Zeile as String in GetUserMemberOf("domain.de", Manfred, 12345)  
   sw.writeline(Zeile)
Next

Mathe172
Peacer
Peacer 11.03.2011 um 17:42:35 Uhr
Goto Top
Hi Mathe172

So richtig will das noch nicht. Ich habe es folgendermaßen ausprobiert.

Dim Rückgabewert As System.Collections.Generic.List(of String) = GetUserMemberOf("domain.de", Manfred, 12345)  
   		textbox2.Text = Rückgabewert.ToString

da bringt er mir das:

System.Collections.Generic.List`1[System.String]


LG Peacer
mathe172
mathe172 11.03.2011 um 19:23:58 Uhr
Goto Top
Hallo Peacer,

Die ToString Methode funktioniert für deine Zwecke auch nicht...Die gibt nur den Typ deiner Variable zurück.

Versuch mal:
'Für das erste Element:  
textbox2.text=Rückgabewert(0)
'Für alle:  
For each Element as String in Rückgabewert
Textbox2.text &= Element & vbnewline
Next
'oder...  
For i as integer=0 to rückgabewert.count - 1
Textbox2.text &=  rückgabewert(i) & vbnewline
Next
'und wenn die leere Zeile wegsoll...  
'For...  
'....  
'Next  
With Textbox2
if .text<>"" andalso .text.last=vbnewline then .text=.text.remove(.text.length-1)  
End With

Mathe172