Kategorien
Scripte

How to read Active Directory Users?

Vorgestellt wird hier ein Source Code für Visual Basic 6 zum Auslesen eines Active Directory und Erstellung einer Userdatei im CSV Format.

Binäre Darstellung

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

Für die Ausführung des Scriptes und auch für eventuelle Schäden an euren Datenbanken kann ich keine Gewährleistung übernehmen. Ihr benutzt den Code des Scriptes auf eigene Gefahr. Denkt daran! Zuerst sichern dann loslegen.

Michael Leidig

Von Michael

Diplom-Ingenieur
wohnhaft in München

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert