dynarius
Goto Top

Export aus AD mit LDIFDE oder CSVDE (Nur bestimmte Objekte)

Hallo Community,

Mein Vorhaben:

Ich benötige einen Export aus unserem AD aus mehreren OU`s, da wir in verschiedenen OU`s jeweils die selbe OU "User" verschachtelt haben. Hat den Hintergrund da wir mehrere Niederlassungen haben und wir die User den Niederlassungen zuweisen.
So ich benötige nun aus allen OU`s worin sich die OU "User" befindet, derzeit sind es 3 OU`s worin dies der Fall ist, einen Export in eine .txt Datei worin sich der loginname "SAMAccountname" und die Telefonnumer "TelephoneNumber" befindet. Ich benötige von der Telefonnummer aber nur die letzten 4 Zeichen, sprich die Nebenstelle. So das das wie folgt aussehen müsste.

Beispiel:
mustermannhans,9835

Ich habe es mit CSVDE versucht und habe schon rausgefunden das er schön mit "," trennt so wie ich es auch benötige, jedoch gibt er mir zu dem noch den kompletten DN aus was ich nicht benötige.

Folgenden Befehl habe ich dafür benutzt für eine OU jetzt mal:
csvde -d "OU=Users,OU=test,DC=testsubdomain,DC=testdomain,DC=de" -f "C:\export.txt" -l "telephoneNumber,SamAccountName" -s meindomänencontroller -t 389

Danach müsste noch die DN und die Telefonnummer bis auf die letzten 4 Zeichen entfernt werden.
Wenn jemand eine Idee hat wie das mit Perl oder in einer Batch lösbar wäre ich für eine Antwort sehr dankbar.

Content-ID: 164485

Url: https://administrator.de/forum/export-aus-ad-mit-ldifde-oder-csvde-nur-bestimmte-objekte-164485.html

Ausgedruckt am: 23.12.2024 um 04:12 Uhr

eSkapo
eSkapo 13.04.2011 um 12:01:55 Uhr
Goto Top
hi,
vielleicht kann ich dir helfen, ich hab so etwas ähnliches bereits gemacht. Also ich habe mit ldifde einige User aus einer OU exportiert.. Dazu verwende ich folgenden Code:

ldifde -f "C:\Export in EvenUsers.txt" -d "ou=Even_Users,dc=test,dc=domain" -r "(objectCategory=person)" -l "cn,Company"

wenn du das mit dem kürzen der Telefonnummer machen willst hab ich vielleicht einen Ansatz für dich:

For /L %%b In (1,2,100) do (

set var3=000%%b
set var3=!var3:~-4!
....

Diese For-Schleife zählt bis 100 erzeugt also in meinem Fall 100 User. Die sollen bei mir nen bestimmten Namen haben nähmlich User0001 bis hin zu User0100. Ich schreibe mit derm ersten set var3 nun immer drei Nullen vor die hochgezählte Zahl aus der Schleife. Also zB 000+1 oder 000+100.. Mit dem zweiten set var wird dafür gesorgt, dass nur die letzten vier Stellen ausgegeben werden also zb User0001 oder User0100..
VIelleicht kannst du das ja anwenden...

Kannst ja mal posten ob dir was helfen konnte von dem

LG

eSkapo
Dynarius
Dynarius 13.04.2011 um 14:18:01 Uhr
Goto Top
Danke für die Mühe vorab schonmal. Hört sich auch gut an, das Problem was ich an der Stelle habe, ist ja das ich nur aus dem Feld Telefonnummer die letzten 4 Zeichen brauche und nicht aus dem kompletten Export.
Da sich die Namen ja in unterschiedlicher Länge befinden.
Ein Beispiel aus meinem Export ist folgender eine Zeile:

"CN=Mustermann.Hans,OU=Users,OU=ersteOU,DC=Subdomain,DC=Domain,DC=de",+49 (89) 12345 6756,mustermannha

eig. benötige ich nur: "6756,mustermannha"

Das wäre mein Ziel an der Stelle.
eSkapo
eSkapo 13.04.2011 um 14:30:04 Uhr
Goto Top
also um den export generell schonmal zu kürzen kannst du über -l die attribute angeben die du ausgegeben haben möchtest eben zb die telefonnummer und mustermannha..
also der befehl müsste dann in etwa so aussehen:

ldifde -f "C:\Export.txt" -d "ou=Users,OU=ersteOU,dc=Subdomain,dc=Domain,dc=de" -r "(objectCategory=person)" -l "telephonenumber,displayName"

hinter -l muss Du dann gucken weiß nicht genau wie die Attribute geschrieben werden.. face-smile

ich probiere das auch mal..

lg

eSkapo
Dynarius
Dynarius 13.04.2011 um 14:32:06 Uhr
Goto Top
Das habe ich schon gemacht. Hier ich poste nochmal den Befehl mit csvde:

csvde -d "OU=Users,OU=test,DC=testsubdomain,DC=testdomain,DC=de" -f "C:\export.txt" -l "telephoneNumber,SamAccountName" -s meindomänencontroller -t 389

da habe ich "telephoneNumber" und "SAMAccountName" stehen.

lg
eSkapo
eSkapo 13.04.2011 um 14:36:20 Uhr
Goto Top
okay und jetzt fehlt dir noch das mit dem kürzen also das nur die letzten vier stellen der telephonnummer ausgegeben werden oder was ?

lg

eSkapo
Dynarius
Dynarius 13.04.2011 um 14:41:28 Uhr
Goto Top
genau das ist.
Weil wir im AD natürlich immer neue Mitarbeiter bekommen wird das dann als geplanter Task eingestellt der einmal am Tag läuft und die .txt datei dann neu schreibt mit den neuen Mitarbeitern.

lg
Dynarius
eSkapo
eSkapo 13.04.2011 um 14:45:45 Uhr
Goto Top
puh..

ich weiß nicht es ist vielleicht möglich hinter -l das irgendwie zu koppeln könnte ich mir vorstellen..

aber leider habe ich momentan keinen konkreten Lösungsvorschlag..

wenn ich was weiß, meld ich mich...

lg

eSkapo
Dynarius
Dynarius 13.04.2011 um 14:53:44 Uhr
Goto Top
Ok, das wäre echt super. Vielen dank nochmal für die Mühe.

lg
Dynarius
60730
60730 13.04.2011 um 16:32:24 Uhr
Goto Top
moinsen..

  • also das ausgeben der Info in einen Text hast du ja schon ..
  • Jetzt müßte es nur einen Weg geben den Inhalt von einem Text an einer bestimmten Stelle abzukürzen.
  • Ich würde fast vermuten, das könnte man auch suchen und ersetzen nennen.
  • In kombination mit Batch, sollte das mehr Treffer bringen, als Biber jemals Rothaarige Praktikantinnen verschleissen kann.

Gruß
Dynarius
Dynarius 14.04.2011 um 13:39:45 Uhr
Goto Top
Die Sache mit der Batch ist denke ich auch die einzige Lösung jedoch habe ich bis jetzt noch keinen Ansatz wie ich eine individuelle Zeile immer um eine individuelle anzahl an Zeichen kürzen kann.
60730
60730 14.04.2011 um 14:20:18 Uhr
Goto Top
Zitat von @Dynarius:
Die Sache mit der Batch ist denke ich auch die einzige Lösung jedoch habe ich bis jetzt noch keinen Ansatz wie ich eine
individuelle Zeile immer um eine individuelle anzahl an Zeichen kürzen kann.

  • ausnahmsweise schreibe ich dir eine Batch - das mache ich sonst nie...
und bitte keine Nachfragen - das erklärt sich von alleine und ist so 1.024* schon abgehandelt....
Außerdem ist das zu Export aus AD mit LDIFDE oder CSVDE (Nur bestimmte Objekte) leicht OT
@ beide B aus dem B Bereich - jaaa ich weiß da ist "zuviel" drin, aber kürzen kann er nach studium von Befehl /? ja selber....

for /F "tokens=1,2 delims=," %%a in (C:\export.txt) do call :hansdampfguckindieluft %%a %%b  

goto :eof

:hansdampfguckindieluft
	set name=%1
	set telefon=%2
	set shorty=%telefon:~-4%
	echo [%1] [%2] wird zu [%name%] [%shorty%]
goto :eof
pause

Kriech ich gezz auch ne rothaarige Braktikantin?

gruß
Dynarius
Dynarius 14.04.2011 um 16:50:28 Uhr
Goto Top
Dynarius
Dynarius 14.04.2011 um 17:03:08 Uhr
Goto Top
Bing, geschafft. Danke für eure Hilfe =)