LDIFDE
Diese Programme sind über die Support Tools auf der Windows CD zu installieren. LDIFDE und CSVDE dienen dazu, per Kommandozeile Informationen aus dem Active Directory zu exportieren aber auch zu importieren. Diese Programme sind quasi ein Ersatz für die Import/Export-Funktion des alten Exchange 5.5. Administrators.
Für CSV-Dateien gibt es CSVDE
LDP ist eine grafische Oberfläche, die per LDAP direkt Änderungen am Active Directory erlaubt. Aber auch hier gilt, dass diese Werkzeuge nicht nur hilfreich, aber auch sehr scharf sind.
Information zum LDIF-Format
Das Skript liest LDIF-Dateien ein, welche natürlich ein bestimmtes Format haben. Hier ein Muster einer solchen Daten mit einigen Sonderfällen:
dn: CN=Test1, OU=OU1, DC=msxfaq,DC=de changetype: add cn: Test1 objectClass: User samAccountName: Test1SAM givenName: TEST test: test1 sn: 1 Test3: Feld mit : im String und ein : in der zweiten Zeile dummy changetype: modify replace: unicodePwd unicodePwd::IgBZAG8AdQByAE4AZQB3AFAAdwBkACIA dn: CN=Test2, OU=OU1, DC=msxfaq,DC=de changetype: delete
Hier sind die drei möglichen "Changetype"-Parameter zu sehen, über die ein Objekt angelegt, verändert oder gelöscht wird. für den Import mit LDIFSync sind natürlich nur die Datensätze mit der Funktion "ADD" unterstützt. Beim Einlesen der Datei müssen natürlich verschiedene Sonderfälle beachtet werden, wie z.B.: Felder, die sich über mehrere Zeilen erstrecken. Wichtig ist aber immer, das die erste Zeile eines Datensatzes durch "dn" eingeleitet wird und danach der "changetype" steht.
Auch Sonderzeichen sind in LDAP natürlich möglich und LDIFDE exportiert diese problemlos. Einige Felder haben einen Umlaut aber einige Felder nutzen auch eine Base64-Codierung, erkennbar an den zwei "::" nach dem Feldname
dn: CN=UmlautuserÄÖÜ UmlautuserÄÖÜ,OU=UmlautttestÄÖÜ,DC=carius,DC=de changetype: add objectClass: top objectClass: person objectClass: organizationalPerson objectClass: user cn:: VW1sYXV0dXNlcsOEw5bDnCBVbWxhdXR1c2Vyw4TDlsOc sn:: VW1sYXV0dXNlcsOEw5bDnA== givenName:: VW1sYXV0dXNlcsOEw5bDnA== distinguishedName:: Q049VW1sYXV0dXNlcsOEw5bDnCBVbWxhdXR1c2Vyw4TDlsOcLE9VPVVtbGF1dHR0ZXN0w4TDlsOcLE RDPWNhcml1cyxEQz1kZQ== instanceType: 4 displayName:: VW1sYXV0dXNlcsOEw5bDnCBVbWxhdXR1c2Vyw4TDlsOc name:: VW1sYXV0dXNlcsOEw5bDnCBVbWxhdXR1c2Vyw4TDlsOc userAccountControl: 512 badPwdCount: 0 codePage: 0 countryCode: 0 badPasswordTime: 0 lastLogoff: 0 lastLogon: 0 pwdLastSet: 132585690028081380 primaryGroupID: 513 objectSid:: AQUAAAAAAAUVAAAAwM8SUMELJU0m/cWzlQQAAA== accountExpires: 9223372036854775807 logonCount: 0 sAMAccountName:: VW1sYXV0dXNlcsOEw5bDnA== sAMAccountType: 805306368 userPrincipalName:: VW1sYXV0dXNlcsOEw5bDnEBjYXJpdXMuZGU= objectCategory: CN=Person,CN=Schema,CN=Configuration,DC=carius,DC=de
Dennoch sollten Sie bei der Übertragung zwischen Umgebungen den Zeichensatz kontrollieren.
Mit LDIFDE exportieren
Eine der häufigsten Aufgaben ist der Export von Informationen über bestimmte Objekte. LDIFDE ist hier sicher das beste Programm, da es per Kommandozeile einzelne Objekte aber auch komplette OU's oder Domänen exportieren kann. Diese Dateien können mit einigen Anpassungen dann auch wieder für Importe verwendet werden.
- Export der Informationen eines Benutzers
C:\> ldifde -f fcarius.ldf -d "CN=fcarius,OU=Technik,OU=Abteilung,DC=msxfaq,DC=de" Verbindung mit "nawsv010.msxfaq.de" wird hergestellt. Anmelden als aktueller Benutzer unter Verwendung von SSPI Das Verzeichnis wird in die Datei fcarius.ldf exportiert. Es wird nach Einträgen gesucht... Die Einträge werden geschrieben.. 1 Einträge wurden exportiert. Der Befehl wurde einwandfrei durchgeführt.
- Export aller Objekte einer OU
C:\>ldifde -f technik.ldf -d "OU=Technik,OU=Abteilung,DC=msxfaq,DC=de" Verbindung mit "nawsv010.msxfaq.de" wird hergestellt. Anmelden als aktueller Benutzer unter Verwendung von SSPI Das Verzeichnis wird in die Datei technik.ldf exportiert. Es wird nach Einträgen gesucht... Die Einträge werden geschrieben............................................ 43 Einträge wurden exportiert.
- Export aller Objekte eines Forest
Dies ist besonders dann hilfreich, wenn Sie nicht genau den Objektnamen wissen.
C:\>ldifde -f gc.ldf -t 3268 -s gcname -p subtree Verbindung mit "gcname" wird hergestellt. Anmelden als aktueller Benutzer unter Verwendung von SSPI Das Verzeichnis wird in die Datei gc.ldf exportiert. Es wird nach Einträgen gesucht... Die Einträge werden geschrieben............................................ 43 Einträge wurden exportiert.
- Export der komplette Domäne
Das kann durchaus helfen, Textstellen und Verweise auf alte Server etc. in den verschiedenen Feldern zu finden.
C:\>ldifde -f test.ldf Verbindung mit "nawsv010.msxfaq.de" wird hergestellt. Anmelden als aktueller Benutzer unter Verwendung von SSPI Das Verzeichnis wird in die Datei test.ldf exportiert. Es wird nach Einträgen gesucht... Die Einträge werden geschrieben................................................. ................................................................................ ................................................................................. ................................................................................ ................................................................................ ................................................................................ ............................... 1999 Einträge wurden exportiert. Der Befehl wurde einwandfrei durchgeführt.
Die mit "-f" angegebene Textdatei enthält danach alle Informationen über die exportierten Objekte. Sie sehen in dieser Datei auch sehr viele Felder, die mit der normalen MMC für Benutzer und Computer überhaupt nicht erreichbar sind. Viele Felder sind auch nicht so einfach in Klartext lesbar, z.B.: die Zertifikate, SID, etc. Hier sehen Sie einen kleinen Auszug meines eigenen Objekts. Die komplette Information ist über 41Kbyte groß.
dn: CN=fcarius,OU=Technik,OU=Abteilung,DC=msxfaq,DC=de changetype: add objectClass: top objectClass: person objectClass: organizationalPerson objectClass: User cn: fcarius sn: Carius c: DE l: Paderborn st: NRW title: Dipl.Ing. (BA) description: Technik postalCode: 33104 telephoneNumber: 613 facsimileTelephoneNumber: 653 givenName: Frank distinguishedName: CN=fcarius,OU=Technik,OU=Abteilung,DC=msxfaq,DC=de instanceType: 4 whenCreated: 20000920195349.0Z whenChanged: 20050202152320.0Z displayName: Carius, Frank USNCreated: 17053 USNChanged: 4148007 telephoneAssistant: +49 5251 304 600 memberOf: CN=SGG-Technik,OU=Abteilung,DC=msxfaq,DC=de memberOf: CN=SGG-Mitarbeiter,OU=Abteilung,DC=msxfaq,DC=de memberOf: CN=\+Alle Mitarbeiter von Net at Work,CN=Users,DC=msxfaq,DC=de deliverAndRedirect: FALSE proxyAddresses: smtp:fcarius@msxfaq.de proxyAddresses: X400:c=DE;a= ;p=MSXFAQ;o=Paderborn;s=Carius;g=Frank; proxyAddresses: fax:653 proxyAddresses: SMTP:frank.carius@msxfaq.de extensionData:: RgBBAEMAUwBZAFMATQBCAFgARABhAHQAYQAAABAQEBABAAAAEQAAAAMAAQAAAAAAAQAAAAAAAAADAA EAAAAAAAIAAAAAAAAAHgABAAAAAAAQAQAAAAAAAB4 objectGUID:: x3br8sCjve2JwGroFsdg0Q== UserAccountControl: 512 badPwdCount: 0 codePage: 0 countryCode: 276 badPasswordTime: 127506994640775367 lastLogoff: 0 lastLogon: 127518258080604977 logonHours:: //////////////////////////// primaryGroupID: 513 objectSid:: AQUAABCCDEAAUVAAAAiVW2AGSD0AE/OUgE8QMAAA== sAMAccountName: fcarius legacyExchangeDN: /o=MSXFAQ/ou=Paderborn/cn=Recipients/cn=fcarius UserPrincipalName: fcarius@msxfaq.de lockoutTime: 0 objectCategory: CN=Person,CN=Schema,CN=Configuration,DC=msxfaq,DC=de mail: frank.carius@msxfaq.de msExchMailboxGuid:: gBhy5tVQpkGWDG2y9bHrKg==
Für die Volltextsuche nach Zeichenfolgen ist so ein kompletter Export sehr brauchbar. Sie könnten auch regelmäßig einen Export der "geänderten Objekte" archivieren, um so eine Geschichte ihres LDAP-Verzeichnisdiensts zu erhalten
Benutzer per Import anlegen
Zum Anlegen eines Benutzers reicht ein ganz kurzes LDIF-File
dn: CN=fcarius,OU=Technik,OU=Abteilung,DC=msxfaq,DC=de changetype: add cn: fcarius objectClass: User samAccountName: fcarius
Alle anderen Felder sind optional aber natürlich sollten auch Vorname, Nachname, Firma etc. gesetzt werden.
Export für Import in anderes AD
Die per LDIFDE exportierte Information ist meist komplett ausreichend, um den Benutzer wieder mit der gleichen Information per Import anzulegen. Allerdings gibt es Einschränkungen. So kann man per LDIFDE zwar Felder wie "whenChanged, objectGUID oder MemberOf" exportieren, aber nicht mehr importieren. Daher sollten sie diese Felder gar nicht erst exportieren.
ldifde -f domain.ldf -o objectGUID,distinguishedNam,uSNCreated,uSNCreated,whenChanged,whenCreated,dSCorePropagationData
Achtung: Das Kennwort eines Benutzers wird so nicht exportiert. Für eine "Migration" zwischen Domänen des gleichen Forests sollten Sie besser Move-ADObject oder ADMT -Active Directory Migration Toolkit nutzen
Diese beiden Befehle exportieren dann die Benutzer und Dateien. Leider sind "Computer" eine Unterklasse von Person und damit hier auch enthalten.
Ehe Sie alles exportieren sollen Sie Felder ausschließen, die sowieso nicht importiert werden können. Gefunden habe ich bei Benutzern und Gruppen bisher:
objectGUID,objectSID,distinguishedName,dBCSPwd,ntPwdHistory,lmPwdHistory, badPasswordTime,badPwdCount,lastLogon,lastLogoff,logonCount,pwdLastSet, rid,sAMAccountType,supplementalCredentials,isCriticalSystemObject, uSNchanged,uSNCreated,whenChanged,whenCreated, memberOf,PrimaryGroupID,dSCorePropagationData
LDIFDE kennt dazu aber auch einen Schalter "-m Enable the SAM logic on export.", so dass diese geschützten Felder gar nicht mehr exportiert werden.
Andere Objekte haben natürlich noch andere Felder wie "CreationTime". "NextRID", etc. Die sind aber zumindest bei Benutzern und Gruppen nicht vorhanden. Wenn Sie sich nicht sicher sein, dann versuchen Sie einfach das Feld mit ADSIEDIT zu ändern. Entweder sehen Sie schon, dass das Feld grau ist oder sie bekommen einen Fehler wie:
Eine weitere Option ist das Ausblenden von Feldern, die nicht schreibbar sind.
Entsprechend können Sie dann den Export erweitern. (Das Caret-Zeichen (^) zeit in einer CMD-Datei einen Zeilenumbruch an.
ldifde ^ -f users.ldf ^ -r "(objectclass=user)" ^ -d "ou=ldifdetest,dc=carius.dc=de" ^ -o objectGUID,objectSID,dBCSPwd,ntPwdHistory,lmPwdHistory,badPasswordTime,badPwdCount,lastLogon,lastLogoff,logonCount,pwdLastSet,^ rid,sAMAccountType,supplementalCredentials,isCriticalSystemObject,uSNchanged,uSNCreated,whenChanged,whenCreated,memberOf,^ distinguishedName,PrimaryGroupID,dSCorePropagationData,SAMAccountType ldifde ^ -f groups.ldf ^ -r "(objectclass=group)" ^ -o objectGUID,distinguishedNam,uSNchanged,uSNCreated,whenChanged,whenCreated,dSCorePropagationData,LastLogon,LastLogoff,SAMAccountType
Alternativ können Sie natürlich den Export mit einer Liste der gewünschten Felder durchführen. Wenn Sie nur die Objekte aber nicht alle Stammdaten benötigen, dann kann das einfacher sein:
ldifde ^ -f user.ldf ^ -d “dc=carius,dc=de” ^ -p subtree ^ -r “(&(objectCategory=person)(objectClass=User)(givenname=*))” ^ -l “cn,givenName,objectclass,samAccountName,Userprincipalname,Firstname,Givenname”
Am Ende haben sie eine LDF-Datei mit den Objekten.
Wenn Sie eine LDF-Datei von einer anderen Quelle bekommen und keinen Einfluss auf die Inhalte haben, dann können Sie per Powershell mal schnell eine Zeile entfernen. Hier am Beispiel von SAMAccountType
gc .\import.ldif ` | %{if ($_ -notlike "sAMAccountType:*") {$_}} ` | Out-File .\be-Gasperich-export2.ldif
Allerdings geht das natürlich nur mit Feldern, die einzeilig gespeichert sind. Wenn ein Feld zu lange ist, kann das LDIF-Format auch in der nächsten Zeile weitermachen. Dann sollte die Logik schon etwas ausgeklügelter sein.
Mit LDIFDE importieren
Natürlich kann mit LDIFDE auch importiert werden. Allerdings muss die vorher angelegte Exportdatei natürlich "umgeschrieben" werden. In der Zielumgebung ist zumindest der Distinguishedname anders. Wenn Sie eine 1:1 Übertragung einfach in eine andere Domain nutzen möchten, dann kommt ihnen die Option "-c" entgegen:
-c <String1> <String2> Replaces all occurrences of
<String1> with <String2>. Generally, you use
this parameter when you import data from one domain to
another and you must replace the distinguished name of the
export domain (<String1>) with the distinguished name of the
import domain (<String2>)
Quelle
https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/cc731033(v=ws.11)
String1 ist also der "FromDN" in der LDF-Datei und <string2> der gewünschte String für das Ziel. Das geht dann einfach mit:
ldifde ^ -i ^ -f user.ldf ^ -c "dc=carius,dc=de" "dc=msxfaq,dc=de"
Wobei auch bei der ganz kurzen Zeile noch einiges schief gehen kann. Hier mal eine Sammlung der Ursachen und der passenden Fehlermeldung von LDIFDE.
- Falscher DN
Das passiert, wenn Sie die LDF-Datei eines anderen Forest importieren und vergessen den DN mit der Option "-c" umzuschreiben
Add error on entry starting on line 1:
Referral
The server side error is: 0x202b A referral was returned
from the server.
The extended server error is:
0000202B: RefErr: DSID-031007F9, data 0, 1 access points
ref 1: 'msxfaq.de'
- Nicht beschreibbares Attribut. Gesperrte Felder
Da hat sich in ihren LDIF-Export wohl eine Zeile mit einem Feld geschmuggelt, welches nicht importiert werden kann, z.B. "USNCreated", "USNChanged", "ObjectGUID", "ObjectSID" etc. Sie sollten diese beim Export mit LDIFDE mit "-o" ausschließen oder nachträglich entfernen.
Add error on entry starting on line 1:
Unwilling To Perform
The server side error is: 0x209a Access to the attribute is
not permitted because the attribute is owned by the Security
Accounts Manager (SAM).
- Feld nicht eindeutig
In den meisten Fällen importieren Sie einen Benutzer mit einem UPN, der schon vergeben ist
Add error on entry starting on line 1: Constraint Violation
The server side error is: 0x21c8
The operation failed
because UPN value provided for addition/modification is not
unique forest-wide.
- PrimaryGroupID
Eventuell haben Sie dieses Feld noch in der LDIF-Datei. Die "513" steht hier für "Domain Benutzer" und LDIFDE stört sich wohl dran, dass der Benutzer nicht in der Gruppe ist. Das geht ja auch nicht, da er gerade erst angelegt wird. Lassen Sie das Feld beim Export weg und ändern Sie ggfls. nachträglich die primäre Gruppe, wenn dies erforderlich wäre.
Add error on entry starting on line 1:
Unwilling To Perform
The server side error is: 0x529 The specified user account
is not a member of the specified group account.
The extended server error is:
00000529: SvcErr: DSID-031A1254, problem 5003
(WILL_NOT_PERFORM), data 0
- Password nicht sicher
Auch beim Import mit LDIFDE können Kennworte gesetzt werden und werden dann gegen die Kennwortrichtlinien geprüft. Wenn kein Kennwort gesetzt wird, dann legt LDIFDE ein deaktiviertes Konto an.
The server side error is: 0x52d Unable to update the password. The value provided for the new password does not meet the length, complexity, or history requirements of the domain.
- Die Ziel-OU muss schon existieren.
Sie sollten also vorher die OU-Struktur aufbauen oder vorab importieren
Add error on entry starting on line 1:
No Such Object
The server side error is: 0x208d Directory object not found.
The extended server error is:
0000208D: NameErr: DSID-03100241, problem 2001 (NO_OBJECT),
data 0, best match of: 'DC=carius,DC=de'
- Encoding
Vermutlich geht LDIFDE von einer Unicode-Datei aus und sie liefern eine ANSI oder ASCII-Datei. Versuchen Sie mal die Datei mit Notepad zu lesen und mit einem anderen Format zu schreiben. Oder sie arbeiten mit dem Parameter "-u" um explizit Unicode-Dateien zu schreiben und zu lesen.
Add error on entry starting on line 1:
No Such Attribute
The server side error is: 0x57 The parameter is incorrect.
The extended server error is:
00000057: LdapErr: DSID-0C091082, comment: Error in
attribute conversion operation, data 0, v3839
There is a syntax error in the input
file
Failed on line 1. The last token starts with '?'.
- Schemaerweiterung fehlt
Das kann passieren, wenn Sie im LDIF-File zusätzliche Felder haben, die im Ziel-Forest nicht vorhanden sind, z.B. weil dort keine Exchange Schema Erweiterung erfolgt ist.
Add error on entry starting on line 1:
No Such Attribute
The server side error is: 0x57 The parameter is incorrect.
The extended server error is:
00000057: LdapErr: DSID-0C091082, comment: Error in
attribute conversion operation, data 0, v3839
- Gruppen und Mitglieder
Wenn Sie eine Gruppe importieren, dann müssen die Mitglieder schon alle als Objekt vorhanden sind. Ansonsten schlägt der Import der kompletten Gruppe fehl. Sie sollten also zuerst die Benutzer importieren. Wenn Gruppen in Gruppen Mitglied sind, dann helfen mehrere Importe. Zirkelbezüge lassen sich so aber nicht beheben.
Ich hoffe, ich habe damit die meisten Fehler gefunden und beschrieben.
Ändern per LDIFDE
Heute würde ich Massenänderungen eher nicht per LDIFDE machen, sondern per LDAP und PowerShell bzw. mit Set-ADUser. Es geht meist schneller und auch der Import anderer Datenquellen ist aus meiner Sicht einfacher.
Hier ein Beispiel, um die Gruppenmitgliedschaften einer Gruppe per LDIF-Import zu ändern. Beachten Sie, dass sowohl der "Changetype" als auch dass "add: feldname" hier wichtig sind, um die Benutzer hinzuzufügen. Es ist auch ein "replace" möglich. Beachten Sie auch das "-" am Ende des Datensatzes um den nächsten abzutrennen.
dn: CN=group1,OU=test,Dc=msxfaq,dc=test changetype: modify add: member member: CN=User1,OU=Test,DC=msxfaq,DC=test member: CN=User2,OU=Test,DC=msxfaq,DC=test member: CN=User3,OU=Test,DC=msxfaq,DC=test - dn: CN=group2,OU=test,Dc=msxfaq,dc=test changetype: modify add: member member: CN=User1,OU=Test,DC=msxfaq,DC=test -
Löschen per LDIF
Das ist dann der vermutlich einfachste Fall. Sie geben den DistinguishedName des Objekts an und den passenden "Changetype: delete"
dn: CN=group1,OU=test,Dc=msxfaq,dc=test changetype: delete
Auch hier können Fehler auftreten
- OU ist "geschützt"
Das ist der neue Regelfall, wenn Sie eine OU anlegen, dass ein "Deny Delete" aktiviert ist.
Viel Spaß bei größeren Strukturen das wieder "freizugeben"
Add error on entry starting on line 1: Insufficient Rights
The server side error is: 0x5 Access is denied.
The extended server error is: 00000005: SecErr:
DSID-031526E9, problem 4003 (INSUFF_ACCESS_RIGHTS), data 0
- Keine Rekursion
Sie können mit LDIFDE nicht die Wurzel löschen annehmen, es würde dann der komplette Baum gelöscht. Sie müssen von unten nach oben jedes Element individuell löschen. Der Fehler dazu lautet:
Add error on entry starting on line 1: Not allowed on Non-leaf
The server side error is: 0x208c
The operation cannot be performed because child objects
exist. This operation can only be performed on a leaf object.
The extended server error is: 0000208C: UpdErr:
DSID-030A0452, problem 6003 (CANT_ON_NON_LEAF), data 0
LDIFDE und Exchange 5.5
Auch Exchange 5.5 bietet natürlich einen LDAP-Server an. Dieser kann ebenfalls per LDIFDE erreicht werden. Allerdings heißen die Felder etwas anders.
ldifde -s 10.1.1.4 -a cn=Administrator,dc=NT4DOM Password! -f ex55-ldifde.ldf
Wichtig ist hierbei nur, dass Sie mit "-a" die einfache Anmeldung nutzen und den Benutzernamen als auch die Domäne mit angeben. Das Kennwort können Sie mit "*" natürlich auch über eine versteckte Eingabe übermitteln.
Ansonsten ist natürlich der "Exchange 5.5 Admin" immer noch eine sehr effektive Möglichkeit, Verzeichniseinträge zu exportieren als auch zu importieren. Die GUI erlaubt hier schon sehr umfangreiche Tätigkeiten. Über die Kommandozeile und entsprechend vorbereitete CSV-Dateien lassen sich noch mehr Parameter setzen
- 840157 Mail-enabled public folders do not appear in the Global Address List after you configure replication in Exchange Server 5.5
LDIFDE und Fallen
Sehr viele KB-Artikel (z.B. 237677 using LDIFDE to import and export directory objects to Active Directory) gehen darauf ein, wie man Benutzer, Verteiler etc. mittels LDIFDE einfach exportiert und wieder importiert
- User und System Attribute und die Option "-m"
Einfach mal so schnell ein paar User zu exportieren und dann wieder im Ziel zu importieren ist gar nicht so einfach, da LDIFDE auch Systemattribute exportiert, die man aber nie importieren kann oder sollte, z.B. die SID, USNCreated, USNLastChanged, ObjectGUID und einige mehr. Wenn Sie beim Export "-m" mit angeben, dann lässt LDIFDE diese Attribute gleich draußen. - SIDHistory
Die Option "-m" vergisst aber leider die SIDHistory nicht. In der LDIF-Datei ist eben dieses noch drin und verhindert die Neuanlage von Benutzern. Die SIDHistory kann leider nicht per LDIFDE erstellt werden. Das Entfernen der SIDHistory geht sehr einfach mit dem Befehl "FIND" oder Sie sagen LDIFDE beim Import mit "-o sidhistory", dass er das Feld übergehen soll.
FIND /V /I "sIDHistory:" "eingabe.ldf" > ausgabe.ldf
- Weitere Schemaerweiterungen und Pflichtfelder
Nun kann das Active Directory durch verschiedene Anwendungen erweitert werden. Dabei kann es passieren, dass der Hersteller weitere Felder zur "Pflicht" macht und doch als Systemfeld kennzeichnet. Schade, dass LDIFDE das Schema nicht dahingehend untersucht. So bleiben bei "-m" solche Felder weg, aber beim Import kann das Objekt dann aufgrund unvollständiger Daten nicht angelegt werden. - User, Kennworte und Disabled User
Exportiert man die Quelle mit Systemfeldern, dann enthält die LDIFDATEI auch das Kennwort, welches so aber nicht Import werden kann. Sie können das Kennwort mit "-m" beim Expert schon ausschließen oder mit der bekannten "FIND"-Methode der SIDHistory entfernen.
Normalerweise legt LDIFDE neue Benutzer ohne Kennwort nur "Disabled" an mit der Option, dass der Anwender sein Kennwort nach der Aktivierung ändern muss. - Verteiler und Mitgliedschaften
LDIFDE kann auch Verteiler exportieren. Hierbei wird in der LDIF-Datei zuerst der Verteiler selbst ohne Mitglieder so heraus geschrieben, dass er wieder angelegt werden kann. Die Mitglieder werden nachfolgende über einen "Modify-"Block angehängt. Wenn sich im Ziel also der Pfad zu den Mitgliedern geändert hat, muss dies angepasst werden. (z.B. Suchen und Ersetzen) - Unicode
Speziell wenn umlaute im Spiel sind, werden Sie in einigen Feldern keine klar lesbaren Buchstaben sehen sondern nur einen Salat mit einem "=" am Ende. Das ist ein deutliches Zeichen, dass hier die Zeichenkesse "Base64"-codiert wurde. Gerade bei "member"-Einträgen macht dies eine Änderung natürlich nicht gerade einfacher.
Ich hoffe die meisten "Probleme" damit beschrieben zu haben, auf die ich bislang gestoßen bin.
Weitere Links
- RDNCHANGE.VBS
- Verzeichnisabgleich
- AD LDAPFelder
- EX55 LDAPFelder
- CSVDE
- Move-ADObject
- ADMT -Active Directory Migration Toolkit
-
Ldifde
https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/cc731033(v=ws.11) - 153028 XADM: How to Export Multiple (Secondary) E-mail Addresses
- 155414 XADM: Bulk Import/Export FAQ
- 237677 using LDIFDE to Export and Import Directory Objects
- 239639 XADM: How to View Deleted (Tombstoned) Objects
- 263991 How to set a User's password with Ldifde
- 276382 Access to the attribute is not permitted because the attribute is owned by the Security Accounts Manager (SAM)
- 279220 XGEN: How to use LDP to Discover Mail-Enabled Users
- 300409 How to use Csvde.exe to Import Contacts Into Active Directory
- 313823 XADM: How to Modify a User's E-mail Addresses by using Ldifde
- 555365 How to export the members of a distribution group in Exchange 2000/2003 using LDIFDE
- 555634 LDIFDE - Export / Import data from Active Directory
Checkliste für den Einsatz von LDIFDE - 910935 Some of the Lotus Notes contacts in Active Directory are removed
when the DirSync process is interrupted in Exchange Server 2003
Hinweise wie mit LDIFDE auch Fehler korrigiert werden können. - 922258 How to use a VBScript to write proxy addresses to an Ldifde.exe-compatible import file in Exchange Server 2003
- Leitfaden zum Importieren und Exportieren großer Datenmengen in Active
Directory
http://www.microsoft.com/germany/technet/datenbank/articles/600549.mspx - Ldifde
https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/cc731033(v=ws.11) - LDIFDE – Export / Import data from
Active Directory
https://blogs.msmvps.com/systmprog/2006/10/25/ldifde-export-import-data-from-active-directory/ - Verwenden der Flags "UserAccountControl"
zum Bearbeiten von
Benutzerkontoeigenschaften
https://docs.microsoft.com/de-de/troubleshoot/windows-server/identity/useraccountcontrol-manipulate-account-properties - Festlegen eines Benutzerkennworts mit
Ldifde
https://docs.microsoft.com/de-de/troubleshoot/windows-server/identity/set-user-password-with-ldifde - The LDAP Data Interchange Format (LDIF) - Technical Specification
http://www.ietf.org/rfc/rfc2849.txt - Notes LDAP Command line utilities
http://publib.boulder.ibm.com/infocenter/iseries/v5r3/topic/rzahy/rzahycmds.htm
ldapmodify and ldapadd, ldapdelete, ldapexop, ldapmodrdn, ldapsearch, ldapchangepwd, ldapdiff - Introduction to LDIFDE Import
http://www.computerperformance.co.uk/Logon/Logon_LDIF.htm - Script zum importieren von LDIF-Exports
http://www.computerperformance.co.uk/Logon/Logon_LDIF.htm - So, I have to guarantee you that I can recover the contacts in this
OU...
http://blogs.technet.com/b/exchange/archive/2005/05/18/405107.aspx
VBscript um eine LDIF-Export-Datei für einen einfachen Import umzuschreiben. - LDIFDE - LDAP Data Interchange Format Data Exchange
http://blog.dikmenoglu.de/2007/03/ldifde-ldap-data-interchange-format-data-exchange/ - How To Use LDIF Files to Make Changes to an OpenLDAP System
https://www.digitalocean.com/community/tutorials/how-to-use-ldif-files-to-make-changes-to-an-openldap-system