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.
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.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
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
13 Kommentare
Neuester Kommentar
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
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
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..
ich probiere das auch mal..
lg
eSkapo
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..
ich probiere das auch mal..
lg
eSkapo
moinsen..
Gruß
- 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ß
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.
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...
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ß