none
Ungültige Konvertierung von Typ Field in Typ String. RRS feed

  • Frage

  • Hallo

    Ich habe im Internet einen VBScript gefunden der mir alle Domain Controllers auflistet. Diese Script funktioniert als VBS einwandfrei. Beim Einbetten in mein VB.net Programm (VB.net 2.0) erhalte ich eine Fehlermeldung „Ungültige Konvertierung von Typ Field in Typ String.“

    Der Fehler tritt in der Codezeile „objDC = GetObject(GetObject(rs(0)).Parent“

     

    Für Eure Hilfe danke ich in voraus.

     

     

     

     

    Public Class Form1

     

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

     

            Dim Connect, Command, objDC, LDAPQ, strDCs, rs, objRootDSE

     

            objRootDSE = GetObject("LDAP://RootDSE")

            Connect = CreateObject("ADODB.Connection")

            Command = CreateObject("ADODB.Command")

            Connect.Provider = "ADsDSOObject;"

            Connect.open()

            Command.ActiveConnection = Connect

     

            objRootDSE = GetObject("LDAP://RootDSE")

            LDAPQ = "<LDAP://" & objRootDSE.Get("ConfigurationNamingContext") & ">;((objectClass=nTDSDSA));ADsPath;subtree"

     

            Command.CommandText = LDAPQ

            Command.Properties("Page Size") = 1000

            rs = Command.Execute

     

            Do While rs.EOF <> True And rs.BOF <> True

     

                objDC = GetObject(GetObject(rs(0)).Parent)

     

                strDCs = strDCs & objDC.dNSHostName & ", "

                rs.MoveNext()

            Loop

            Connect.close()

     

            MsgBox(strDCs)

     

        End Sub

     

    End Class

    Dienstag, 7. Juni 2011 09:44

Antworten

  • Hallo,

    Dein Code ist für VB.NET eher wenig vorteilhaft, auch wenn man ihn zum Laufen bekommen kann. VB.NET kennt keine Default-Eigenschaften mehr, daher musst Du die Eigenschaft "Value" des Field Objekts explizit angeben:

    objDC = GetObject(GetObject(rs(0).Value).Parent)
    

    Für den managed Zugriff aufs AD/LDAP ohne COM Interop Umweg stehen Dir Klassen im System.DirectoryServices Namespace zur Verfügung. Sonst ist es vielleicht vorteilhafter, das ganze bei VBScript zu belassen.


    Thorsten Dörfler
    Microsoft MVP Visual Basic
    vb-faq.de
    Dienstag, 7. Juni 2011 14:58
    Moderator

Alle Antworten

  • Hallo,

    Dein Code ist für VB.NET eher wenig vorteilhaft, auch wenn man ihn zum Laufen bekommen kann. VB.NET kennt keine Default-Eigenschaften mehr, daher musst Du die Eigenschaft "Value" des Field Objekts explizit angeben:

    objDC = GetObject(GetObject(rs(0).Value).Parent)
    

    Für den managed Zugriff aufs AD/LDAP ohne COM Interop Umweg stehen Dir Klassen im System.DirectoryServices Namespace zur Verfügung. Sonst ist es vielleicht vorteilhafter, das ganze bei VBScript zu belassen.


    Thorsten Dörfler
    Microsoft MVP Visual Basic
    vb-faq.de
    Dienstag, 7. Juni 2011 14:58
    Moderator
  • Danke für den Tipp

     

    Gruss

    Brauschi

    Donnerstag, 9. Juni 2011 08:22