Benutzer mit den meisten Antworten
Ungültige Konvertierung von Typ Field in Typ String.

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
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- Als Antwort markiert Thorsten DörflerModerator Donnerstag, 9. Juni 2011 09:29
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- Als Antwort markiert Thorsten DörflerModerator Donnerstag, 9. Juni 2011 09:29