Hallo zusammen,
ich benötige Hilfe von Leuten die sich mit so etwas auskennen.
Folgende Aufgabenstellung:
Über eine .Net-Anwendung möchte ich einige Werte aus der AD auslesen. Weder der Rechner noch der Benutzer sind aus der gleichen Domäne. Zur LDAP-Abfrage muss somit eine vollständige Authentifizierung stattfinden.
Hier mein bisheriger Versuch. Wie man aus der Programmierung sicherlich erkennen kann, hab ich das über VBS zusammengebastelt.
Wenn ich es so laufen lasse, bekomme ich bei der LDAP-Anfrage immer die Fehlermeldung „Server steht nicht zur Verfügung“.
Wo ist denn hier der Fehler, oder bin ich mit diesem Code komplett auf dem Holzweg.
Vielen Dank im voraus
Sub Main()
Const ADS_SECURE_AUTHENTICATION = 1
Const ADS_FAST_BIND = 32
Const ADS_USE_DELEGATION = 256
Dim strPath(5)
Dim strPassword(5)
Dim strDom(5)
Dim strUsername = "cn=Administrator,cn=users,"
Dim strAttributes = "sn,givenName,msRADIUSFramedIPAddress"
Dim strExportFile = InputBox("Bitte geben Sie den Dateinamen (Excel) für den Export an:", , "C:\temp\AD-Export.xls")
Dim strfilter = "(&(objectCategory=Person)(objectClass=User))"
Dim strScope = "subtree"
strDom(1) = "dc=mobile,dc=firma,dc=de"
strPath(1) = "LDAP://10.100.0.1/" & strDom(1)
strPassword(1) = "Password"
Dim objNamespaceLDAP = GetObject("LDAP:")
Dim cn = CreateObject("ADODB.Connection")
Dim cmd = CreateObject("ADODB.Command")
Dim objExcel = CreateObject("Excel.Application")
Dim objWB = objExcel.Workbooks.Add
Dim objSheet = objWB.Worksheets(1)
objWB.Worksheets.Add()
cn.Provider = "ADsDSOObject"
cn.Open("Active Directory Provider")
cmd.ActiveConnection = cn
For i = 1 To 1
Dim objMyObject = objNamespaceLDAP.OpenDSObject(strPath(i), strUsername & strDom(i), strPassword(i), ADS_SECURE_AUTHENTICATION Or _
ADS_FAST_BIND Or ADS_USE_DELEGATION)
cmd.commandtext = "<" & strPath(i) & ">;" & strfilter & ";" & strAttributes & ";" & strScope
Dim rs = cmd.execute
objSheet = objWB.Worksheets(i)
objSheet.name = strDom(i)
For i2 = 0 To rs.Fields.Count - 1
objSheet.Cells(1, i2 + 1).Value = rs.Fields(i2).Name
objSheet.Cells(1, i2 + 1).Font.Bold = True
Next
objSheet.Range("A2").CopyFromRecordset(rs)
Next
objWB.SaveAs(strExportFile)
rs.close()
cn.close()
objSheet = Nothing
objWB = Nothing
objExcel.Quit()
objExcel = Nothing
MsgBox("Die Datei " & strExportFile & " wurde erstellt.")
End Sub
ich benötige Hilfe von Leuten die sich mit so etwas auskennen.
Folgende Aufgabenstellung:
Über eine .Net-Anwendung möchte ich einige Werte aus der AD auslesen. Weder der Rechner noch der Benutzer sind aus der gleichen Domäne. Zur LDAP-Abfrage muss somit eine vollständige Authentifizierung stattfinden.
Hier mein bisheriger Versuch. Wie man aus der Programmierung sicherlich erkennen kann, hab ich das über VBS zusammengebastelt.
Wenn ich es so laufen lasse, bekomme ich bei der LDAP-Anfrage immer die Fehlermeldung „Server steht nicht zur Verfügung“.
Wo ist denn hier der Fehler, oder bin ich mit diesem Code komplett auf dem Holzweg.
Vielen Dank im voraus
Sub Main()
Const ADS_SECURE_AUTHENTICATION = 1
Const ADS_FAST_BIND = 32
Const ADS_USE_DELEGATION = 256
Dim strPath(5)
Dim strPassword(5)
Dim strDom(5)
Dim strUsername = "cn=Administrator,cn=users,"
Dim strAttributes = "sn,givenName,msRADIUSFramedIPAddress"
Dim strExportFile = InputBox("Bitte geben Sie den Dateinamen (Excel) für den Export an:", , "C:\temp\AD-Export.xls")
Dim strfilter = "(&(objectCategory=Person)(objectClass=User))"
Dim strScope = "subtree"
strDom(1) = "dc=mobile,dc=firma,dc=de"
strPath(1) = "LDAP://10.100.0.1/" & strDom(1)
strPassword(1) = "Password"
Dim objNamespaceLDAP = GetObject("LDAP:")
Dim cn = CreateObject("ADODB.Connection")
Dim cmd = CreateObject("ADODB.Command")
Dim objExcel = CreateObject("Excel.Application")
Dim objWB = objExcel.Workbooks.Add
Dim objSheet = objWB.Worksheets(1)
objWB.Worksheets.Add()
cn.Provider = "ADsDSOObject"
cn.Open("Active Directory Provider")
cmd.ActiveConnection = cn
For i = 1 To 1
Dim objMyObject = objNamespaceLDAP.OpenDSObject(strPath(i), strUsername & strDom(i), strPassword(i), ADS_SECURE_AUTHENTICATION Or _
ADS_FAST_BIND Or ADS_USE_DELEGATION)
cmd.commandtext = "<" & strPath(i) & ">;" & strfilter & ";" & strAttributes & ";" & strScope
Dim rs = cmd.execute
objSheet = objWB.Worksheets(i)
objSheet.name = strDom(i)
For i2 = 0 To rs.Fields.Count - 1
objSheet.Cells(1, i2 + 1).Value = rs.Fields(i2).Name
objSheet.Cells(1, i2 + 1).Font.Bold = True
Next
objSheet.Range("A2").CopyFromRecordset(rs)
Next
objWB.SaveAs(strExportFile)
rs.close()
cn.close()
objSheet = Nothing
objWB = Nothing
objExcel.Quit()
objExcel = Nothing
MsgBox("Die Datei " & strExportFile & " wurde erstellt.")
End Sub