Logo faq-o-matic.net
Logo faq-o-matic.net

LDIF-Generator für den Import in Active Directory

von veröffentlicht am4. Juni 2006, 15:58 Uhr Kurzlink und Zitatlink einblenden
Kategorie Kategorie: Active Directory, AD: Daten bearbeiten, Scripting   Translate with Microsoft Translator Translate EN   Die angezeigte Seite drucken

LDIFDE.exe ist ein wunderbares Tool um Objekte aus dem Active Directory auszulesen, ändern und auch zu erstellen. Wer sich schon einmal mit LDIFDE beschäftigt hat, stellt aber schnell fest, dass die Syntax der Importdatei sich nicht ganz einfach darstellt und eine Datei für das Erstellen von Organisationseinheiten, Benutzern, Kontakten, Gruppen oder Computern in großer Menge nicht schnell mal so erzeugt ist.

Da ist eine Excel-Tabelle auf jeden Fall einfacher und schneller zu erstellen und zu pflegen. Verwendet man in der Excel-Tabelle auch noch die Excel-Formeln, die im Artikel "Importdatei für CSVDE.exe einfach generieren" beschrieben werden, hat man sehr schnell einen umfangreichen Active-Directory-Inhalt im Excel-Format.

Jetzt müsste diese Excel-Tabelle nur noch ins LDIF-Format gebracht werden. Dazu habe ich ein Script geschrieben, das mir diese Arbeit automatisiert.

Die einzigen Voraussetzungen für die erfolgreiche Transformation sind:

  1. Die ersten beiden Zellen in der Excel-Tabelle.
  2. Keine Leerzellen in der Überschriftenzeile.

1. Die ersten beiden Zellen in der Excel-Tabelle

Damit die Formatierung in der LDIF-Datei stimmt, muss die erste Spalte der Excel-Tabelle aus dem "DN" (Distinguished Name) und die zweite Spalte aus dem LDIF-Attribut "ChangeType" bestehen.

2. Keine Leerzellen in der Überschriftenzeile

Die erste Zeile der Excel-Tabelle stellt die Überschriften und gleichzeitig die Attribute der LDIF-Datei dar. Um sicherzustellen, dass alle benötigten Attribute in der LDIF-Datei aufgeführt sind, darf keine leere Zelle in der Überschriftenzeile vorkommen, da eine leere Zelle in der Überschrift als Ende der Überschriftenzeile interpretiert würde.
Hier ein Beispiel der ersten Zellen einer geeigneten Excel-Tabelle:

Sollte ein Attributwert nicht für alle Objekte benötigt werden, kann diese Zelle einfach leer gelassen werden (siehe oben Zelle "E2"). Unten aufgeführt ist das Script, welches diese Arbeit für uns macht. Das Script ist in Visual Basic Script geschrieben:

- Start Script -
  1. Option Explicit
  2.  
  3. Dim objDialog, intResult
  4. Dim objTargetDialog, intReturn
  5. Dim objFSO, objFile, objExcel, objWorkbook, Line, Row, objTitle, objData
  6.  
  7. Const ForReading = 1
  8.  
  9. Set objDialog = CreateObject("UserAccounts.CommonDialog")
  10. objDialog.Filter = "*.xls|*.xls|All Files|*.*"
  11. objDialog.FilterIndex = 1
  12. objDialog.InitialDir = "C:\"
  13. intResult = objDialog.ShowOpen
  14. If intResult = 0 Then
  15.  wscript.Quit
  16. End If
  17. Set objTargetDialog = CreateObject("SAFRCFileDlg.FileSave")
  18. objTargetDialog.FileName = "C:\LDF_Input.ldf"
  19. objTargetDialog.FileType = ".ldf"
  20. intReturn = objTargetDialog.OpenFileSaveDlg
  21. If intReturn Then
  22.  Set objFSO = CreateObject("Scripting.FileSystemObject")
  23.      Set objFile = objFSO.CreateTextFile(objTargetDialog.FileName)
  24.  
  25.  Set objExcel = CreateObject("Excel.Application")
  26.  Set objWorkbook = objExcel.Workbooks.Open (objDialog.FileName, ForReading, False)
  27.  Line = 1
  28.  Row = 2
  29.  Do until objExcel.Cells(Row,Line).Value = "" 
  30.   Do until objExcel.Cells(1,Line).Value = ""
  31.    objTitle = objExcel.Cells(1,Line)
  32.     objData = objExcel.Cells(Row,Line)
  33.     If objData <> "" Then
  34.     objFile.WriteLine objTitle & ": " & objData
  35.     End If     
  36.    Line = Line + 1
  37.     If objExcel.Cells(1,Line).Value = "" Then
  38.     objFile.WriteLine
  39.     End If
  40.   loop
  41.   Row = Row + 1
  42.   Line = 1
  43.  loop
  44.  objExcel.Quit
  45.  objFile.Close
  46. Else
  47.  WScript.Quit
  48. End If
  49.  
  50. Wscript.Echo "Process succsessful!"
  51.  
  52. wscript.Quit

- End Script -

Um das Script zu verwenden, kopiert man einfach die Zeilen zwischen "- Start Script -" und "- End Script -" in eine Textdatei und benennt diese Datei dann um in "LDIF-Generator.vbs". Jetzt sollte eine den Anforderungen entsprechende Excel-Tabelle und die Datei "LDIF-Generator.vbs" existieren. Wenn man nun die Date "LDIF-Generator.vbs" ausführt, wird man erst aufgefordert, die benötigte Excel-Datei anzugeben:

Nach dem auswählen der Excel-Datei wird man aufgefordert, den Speicherort und den Dateinamen der LDIF-Datei anzugeben. Der vorgeschlagene Dateiname kann gerne übernommen werden:


 
Sobald die Excel-Tabelle eingelesen wurde und die Daten in die LDIF-Datei geschrieben wurden, wird dies mit einer Bestätigung angezeigt:

Die erstellte Datei kann mit einem Texteditor eingesehen und überprüft werden. Hier ein Beispiel:

Der Inhalt der LDIF-Datei kann jetzt mit dem Programm LDIFDE.exe ins Active Directory importiert werden. Dazu wird LDIFDE.exe mit den Schaltern -i (für den Importmodus) und -f (Dateipfad) in der Eingabeaufforderung aufgerufen. Weitere Informationen zur LDIFDE.exe gibt es auch im Artikel "Kommandozeilentools zur AD-Bearbeitung". Anzeigen der LDIFDE-Hilfe mit "LDIFDE.exe /?" in der Eingabeaufforderung.

Für die Verwendung des Scripts kann ich keine Gewährleistung übernehmen und die Verwendung des Scripts erfolgt auf eigene Gefahr.

© 2005-2014 bei faq-o-matic.net. Alle Rechte an den Texten liegen bei deren Autorinnen und Autoren.

Jede Wiederveröffentlichung der Texte oder von Auszügen daraus - egal ob kommerziell oder nicht - bedarf der ausdrücklichen Genehmigung durch die jeweiligen Urheberinnen oder Urheber.

Das Impressum findet sich unter: http://www.faq-o-matic.net/impressum/

Danke, dass du faq-o-matic.net nutzt. Du hast ein einfaches Blog sehr glücklich gemacht!