Vorgestellt wird hier ein Source Code für Visual Basic 6 zum Auslesen eines Active Directory und Erstellung einer Userdatei im CSV Format.
Wie oft ist es schon vorgekommen. Ihr braucht mal eben ganz schnell eine Liste aus dem AD um irgendwelche Abgleiche oder Listen zu erstellen.
Das ist es gut wenn ihr ein Script parat habt welches die Rohdaten bereitstellt. Und wenn möglich auch noch recht fix. Darum habe ich mir vor einiger Zeit darüber Gedanken gemacht. Daraufhin entstand dieses kleine Script.
Ausgegeben werden:
- SAMAccountname -> Anmeldename
- Lastname -> Nachname
- Givenname -> Vorname
- TelephoneNumber -> hinterlegte Telefonnummer
- Mail -> Mailadresse
- location -> Standort, wenn eingetragen natürlich
- street -> Straße
- LDAP-Pfad -> Pfad in der AD Struktur
- Department -> Abteilung
- HomeDirectory -> persönliches Laufwerk
- LogonScript -> verwendetes, dem Benutzer zugewiesenes Anmeldescript
- IsAccountLocked -> Ist der Account gesperrt?
- userWorkstations – w
- Wenn eingetragen, an welchen Computerobjekten ist eine Anmeldung erlaubt.
Dim objAs, objUser, sUser, oDomain, oComputer
Dim ListeOU(5000), strLDAPQuery, objCON, Anzahl, Bereich
AnzahlOU = 1
Kontrollfeld.Text = ""
Bereich = OU.Text
If Bereich = "" Then
Exit Sub
End If
Open "C:\" & Bereich & ".csv" For Output As #1
On Error Resume Next
Kontrollfeld.Text = ""
Set objCON = CreateObject("ADODB.Connection")
CONSTRING = "Provider=ADSDSOObject"
objCON.Open CONSTRING
Dim dc(10)
tmp = Domain.Text
i = 1
While (InStr(1, tmp, ".")) <> 0
laenge = Len(tmp)
punkt = InStr(1, tmp, ".")
dc(i) = Left(tmp, punkt - 1) & ","
rest = laenge - punkt
tmp = Right(tmp, rest)
i = i + 1
Wend
dc(i) = tmp
For K = 1 To i
DomSTR2 = DomSTR2 & "dc=" & dc(K)
Next K
DomSTR = Domain.Text & "/" & DomSTR2 & ">"
strLDAPQuery = " 0 Then
AnmeldeWorkstations = oUser.Get("userWorkstations")
Else
AnmeldeWorkstations = " "
End If
ADSPfad = oUser.ADsPath
If oUser.Get("TelephoneNumber") = "" Then
Telefon = " "
End If
If oUser.Get("mail") = "" Then
mail = " " Else
mail = oUser.Get("mail")
End If
If oUser.Department = "" Then
dep = "?"
Else
dep = oUser.Department
End If
If oUser.Get("l") = "" Then l = " " Else l = oUser.Get("l")
If oUser.Get("streetAddress") = "" Then
street = " " Else street = oUser.Get("streetAddress")
End If
Kontrollfeld.Text = Kontrollfeld.Text & "*"
Kontrollfeld.Refresh
Print #1,
Chr(34) & oUser.Get("SAMAccountname")
& Chr(34) & ";" & Chr(34) & nachname
& Chr(34) & ";" & Chr(34) & Vorname
& Chr(34) & ";" & Chr(34) & Telefon
& Chr(34) & ";" & Chr(34) & mail
& Chr(34) & ";" & Chr(34) & l
& Chr(34) & ";" & Chr(34) & street
& Chr(34) & ";" & Chr(34) & ADSPfad
& Chr(34) & ";" & Chr(34) & dep
& Chr(34) & ";" & Chr(34) & oUser.HomeDirectory
& Chr(34) & ";" & Chr(34) & oUser.LoginScript
& Chr(34) & ";" & Chr(34) & oUser.IsAccountLocked
& Chr(34) & ";" & Chr(34) & AnmeldeWorkstations
& Chr(34)
Next
End If
End If
AnzahlOU = AnzahlOU + 1
rs.MoveNext
Wend
Close #1