Hallo Forum,
Ich haber hier ein kleines Problem. Folgender VBA Quelltext macht mir ein bisschen Kopfzerbrechen.
'create filestream for writing
Dim FSO, Datei
Set FSO = CreateObject("Scripting.FileSystemObject")
Set FileWrite = FSO.CreateTextFile("deleted.csv")
Dim strRead
'open filestream for reading
Set FileRead = FSO.OpenTextFile("Location.txt", 1)
While not FileRead.AtEndOfStream
'Initialise variable with the textfile
strRead = FileRead.ReadLine()
strCountry = Split(strRead, ",")(0) 'Initialise Country
strLocation = Split(strRead, ",")(1) 'Initialise Location
strDomain = Split(strRead, ",")(2) 'Initialise Domain
'Path for Search
<b>path = "LDAP://OU=" & strLocation & ",OU=" & strCountry & ",DC=" & strDomain & ",DC=xxx,DC=xxx,DC=xxx"</b>
'SQL searchstring
<b>sql = "SELECT ADsPath FROM '" & path & "' WHERE objectClass='User' and description='deleted'"</b>
Set objconn = CreateObject("ADODB.Connection")
Set objcomm = CreateObject("ADODB.Command")
objconn.Provider = "ADsDSOObject"
objconn.open "Active Directory Provider"
Set objcomm.ActiveConnection = objconn
'parameters for search
objcomm.CommandText = sql
objcomm.Properties("Page Size") = 1000
objcomm.Properties("Searchscope") = 2
'execute search
Set rs = objcomm.Execute
If Not rs.EOF Then
rs.MoveFirst
Do Until rs.EOF
Set objkonto = GetObject(rs("ADsPath"))
strRead = objkonto.ADsPath
'cut "LDAP://" from the left side of the string
strRead = Right(strRead, Len(strRead) - 7)
'first split the Canonical Name by "," then by "="
FileWrite.Write(Split(Split(strRead, ",")(0), "=")(1)) & ";" 'Logon Name
FileWrite.Write(objkonto.DisplayName) & ";" 'DisplayName
FileWrite.Write(Split(Split(strRead, ",")(2), "=")(1)) & ";" 'SAXXX
FileWrite.Write(Split(Split(strRead, ",")(4), "=")(1)) & ";" 'Country
FileWrite.Write(Split(Split(strRead, ",")(3), "=")(1)) & ";" 'Location
FileWrite.Write(objkonto.Description) 'Description
FileWrite.WriteLine
rs.MoveNext
Loop
rs.Close
End If
Wend
'Close opened files
FileRead.Close
FileWrite.Close
MsgBox("Skript abgeschlossen")
Ich lese über eine Textdatei verschiedene Domänen sowie Locations aus um dann dort nach Usern zu suchen in deren Beschreibungsfeld "deleted" drin steht, das im sql string auch zu sehen ist. Das funktioniert in unserer deutschen Domäne auch einwandfrei, und die Namenskonventionen gelten auch weltweit in der Firma. Wenn ich jetzt auf die Südamerikanischen und Spanischen Domänen zugreifen will, führt er mir die Suche erfolgreich durch, ohne etwas auszugeben.
Über Active Directory Admin Client finde ich hier aber Ergebnisse. Hat jemand einen Tipp was ich in VBA zu berücksichtigen habe, damit ich in einer anderen Domäne auch etwas finde?
Gruß
Markus Seidl
Ich haber hier ein kleines Problem. Folgender VBA Quelltext macht mir ein bisschen Kopfzerbrechen.
'create filestream for writing
Dim FSO, Datei
Set FSO = CreateObject("Scripting.FileSystemObject")
Set FileWrite = FSO.CreateTextFile("deleted.csv")
Dim strRead
'open filestream for reading
Set FileRead = FSO.OpenTextFile("Location.txt", 1)
While not FileRead.AtEndOfStream
'Initialise variable with the textfile
strRead = FileRead.ReadLine()
strCountry = Split(strRead, ",")(0) 'Initialise Country
strLocation = Split(strRead, ",")(1) 'Initialise Location
strDomain = Split(strRead, ",")(2) 'Initialise Domain
'Path for Search
<b>path = "LDAP://OU=" & strLocation & ",OU=" & strCountry & ",DC=" & strDomain & ",DC=xxx,DC=xxx,DC=xxx"</b>
'SQL searchstring
<b>sql = "SELECT ADsPath FROM '" & path & "' WHERE objectClass='User' and description='deleted'"</b>
Set objconn = CreateObject("ADODB.Connection")
Set objcomm = CreateObject("ADODB.Command")
objconn.Provider = "ADsDSOObject"
objconn.open "Active Directory Provider"
Set objcomm.ActiveConnection = objconn
'parameters for search
objcomm.CommandText = sql
objcomm.Properties("Page Size") = 1000
objcomm.Properties("Searchscope") = 2
'execute search
Set rs = objcomm.Execute
If Not rs.EOF Then
rs.MoveFirst
Do Until rs.EOF
Set objkonto = GetObject(rs("ADsPath"))
strRead = objkonto.ADsPath
'cut "LDAP://" from the left side of the string
strRead = Right(strRead, Len(strRead) - 7)
'first split the Canonical Name by "," then by "="
FileWrite.Write(Split(Split(strRead, ",")(0), "=")(1)) & ";" 'Logon Name
FileWrite.Write(objkonto.DisplayName) & ";" 'DisplayName
FileWrite.Write(Split(Split(strRead, ",")(2), "=")(1)) & ";" 'SAXXX
FileWrite.Write(Split(Split(strRead, ",")(4), "=")(1)) & ";" 'Country
FileWrite.Write(Split(Split(strRead, ",")(3), "=")(1)) & ";" 'Location
FileWrite.Write(objkonto.Description) 'Description
FileWrite.WriteLine
rs.MoveNext
Loop
rs.Close
End If
Wend
'Close opened files
FileRead.Close
FileWrite.Close
MsgBox("Skript abgeschlossen")
Ich lese über eine Textdatei verschiedene Domänen sowie Locations aus um dann dort nach Usern zu suchen in deren Beschreibungsfeld "deleted" drin steht, das im sql string auch zu sehen ist. Das funktioniert in unserer deutschen Domäne auch einwandfrei, und die Namenskonventionen gelten auch weltweit in der Firma. Wenn ich jetzt auf die Südamerikanischen und Spanischen Domänen zugreifen will, führt er mir die Suche erfolgreich durch, ohne etwas auszugeben.
Über Active Directory Admin Client finde ich hier aber Ergebnisse. Hat jemand einen Tipp was ich in VBA zu berücksichtigen habe, damit ich in einer anderen Domäne auch etwas finde?
Gruß
Markus Seidl