Active Directory Export Textdatei suchen ersetzen und bestimmte Stellen überspringen
Hi leute - ich hoffe mir kann jemand helfen ich habe folgende Anforderung:
Ich möchte bestimmte AD Einträge in einer SQL 2005 Datenbank integrieren, weil ich diese dort für eine Auswertung bzw. Viewvernetzung einer anderen Tabelle benötige.
Folgendes hab ich schon gemacht - per geplanten task am DB Server:
csvde -f export.txt -l givenName, displayName,givenName,mail,sAMAccountName -d "OU=Users, OU=AT, dc=testdomain, dc=vienna" -r objectClass=user
findstr /V /C:"givenName" export.txt > exportNoHeader.txt
--> das funktioniert soweit perfekt die Ausgabe von exportNoHeader sieht so aus:
"CN=Kobrlova Iveta,OU=CZ,OU=Users,OU=AT,DC=testdomain,DC=vienna",Iveta,Kobrlova Iveta,ivkobrlo,i.kobrlova@test.com
sodala jetzt hab ich das Problem, dass wenn ich dies per Bulkimport in meine DB integrieren möchte und ich als Fieldseperator "," eingebe - ich für das AD-Feld dn ("CN=Kobrlova Iveta,OU=CZ,OU=Users,OU=AT,DC=testdp,aom,DC=vienna") für jedes Komma ein eigen Spalte bekomme - ich möchte das aber in einer Spalte haben, weil es im AD auch noch Unterverzeichnisse gibt.
Jetzt hätte ich folgendes gemacht und das bring ich nicht zusammen:
Ich hätte einfach das textfile exportnoHeader vor dem bulkomport noch so bearbeitet, dass als Trennzeichen ein ";" verwendet wird aber ERST nach dem CN eintrag - also so sollte das dann aussehen:
"CN=Kobrlova Iveta,OU=CZ,OU=Users,OU=AT,DC=testdomain,DC=vienna";Iveta;Kobrlova Iveta;ivkobrlo;i.kobrlova@test.com
die Batchanweisung sollte also zwar alle Beistriche auf Komma ändern aber nicht wenn diese zwischen Anführungsstrichen stehen....
ist sowas möglich
Vielen Dank.
lg
roman
Ich möchte bestimmte AD Einträge in einer SQL 2005 Datenbank integrieren, weil ich diese dort für eine Auswertung bzw. Viewvernetzung einer anderen Tabelle benötige.
Folgendes hab ich schon gemacht - per geplanten task am DB Server:
csvde -f export.txt -l givenName, displayName,givenName,mail,sAMAccountName -d "OU=Users, OU=AT, dc=testdomain, dc=vienna" -r objectClass=user
findstr /V /C:"givenName" export.txt > exportNoHeader.txt
--> das funktioniert soweit perfekt die Ausgabe von exportNoHeader sieht so aus:
"CN=Kobrlova Iveta,OU=CZ,OU=Users,OU=AT,DC=testdomain,DC=vienna",Iveta,Kobrlova Iveta,ivkobrlo,i.kobrlova@test.com
sodala jetzt hab ich das Problem, dass wenn ich dies per Bulkimport in meine DB integrieren möchte und ich als Fieldseperator "," eingebe - ich für das AD-Feld dn ("CN=Kobrlova Iveta,OU=CZ,OU=Users,OU=AT,DC=testdp,aom,DC=vienna") für jedes Komma ein eigen Spalte bekomme - ich möchte das aber in einer Spalte haben, weil es im AD auch noch Unterverzeichnisse gibt.
Jetzt hätte ich folgendes gemacht und das bring ich nicht zusammen:
Ich hätte einfach das textfile exportnoHeader vor dem bulkomport noch so bearbeitet, dass als Trennzeichen ein ";" verwendet wird aber ERST nach dem CN eintrag - also so sollte das dann aussehen:
"CN=Kobrlova Iveta,OU=CZ,OU=Users,OU=AT,DC=testdomain,DC=vienna";Iveta;Kobrlova Iveta;ivkobrlo;i.kobrlova@test.com
die Batchanweisung sollte also zwar alle Beistriche auf Komma ändern aber nicht wenn diese zwischen Anführungsstrichen stehen....
ist sowas möglich
Vielen Dank.
lg
roman
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 188362
Url: https://administrator.de/forum/active-directory-export-textdatei-suchen-ersetzen-und-bestimmte-stellen-ueberspringen-188362.html
Ausgedruckt am: 17.05.2025 um 20:05 Uhr
9 Kommentare
Neuester Kommentar
Hallo weini79 und willkommen im Forum!
Als Schnellschuss etwa so:
Grüße
bastla
Als Schnellschuss etwa so:
@echo off & setlocal
set "Ein=exportNoHeader.txt"
set "Aus=exportNoHeaderSemicolon.txt"
del "%Aus%" 2>nul
(for /f "usebackq delims=" %%i in ("%Ein%") do (
set "Zeile="
for %%a in (%%i) do call :ProcessToken %%a
setlocal enabledelayedexpansion
echo !Zeile:~,-1!
endlocal
))>>"%Aus%"
goto :eof
:ProcessToken
set "Zeile=%Zeile%%1;"
goto :eof
bastla
Hallo weini79!
Der Teil ab "
) ...
Grüße
bastla
Der Teil ab "
:ProcessToken
" ist ein Unterprogramm - das Hauptprogramm endet (durch "goto :eof
") unmmittelbar davor, daher Deine "Bulkimport"-Zeile vor dem ersten "goto :eof
" platzieren (wenn Du "Code"-Formatierung verwendet hättest, hätte ich die Zeilennummer genannt Grüße
bastla
Hallo weini79!
Sollte so gehen (ungetestet)
Grüße
bastla
er macht halt jetzt überall hinten ein ";" - auch in den Zeilen wo vorher keines war:
Deswegen hatte ich es ja in der ersten Version abgeschnitten ...Sollte so gehen (ungetestet)
@echo off & setlocal
set "Exp=export.txt"
set "Ein=exportNoHeader.txt"
set "Aus=exportNoHeaderSemicolon.txt"
set "Datei=c:\adexport\exportNoHeader.txt
csvde -f "%Exp%" -l sAMAccountName,mail -d "OU=Users, OU=AT, dc=testdomain, dc=vienna" -r objectClass=user
findstr /VC:"DN" "%Exp%">"%Ein%"
del "%Aus%" 2>nul
(for /f "usebackq delims=" %%i in ("%Ein%") do (
set "EinZeile=%%i"
set "Zeile="
for %%a in (%%i) do call :ProcessToken %%a
setlocal enabledelayedexpansion
if "!EinZeile:~-1!"==";" (echo !Zeile!) else (echo !Zeile:~,-1%!)
endlocal
))>>"%Aus%"
sqlcmd -i Bulkimport.sql
goto :eof
:ProcessToken
set "Zeile=%Zeile%%1;"
goto :eof
bastla