Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Active Directory Export Textdatei suchen ersetzen und bestimmte Stellen überspringen

Frage Entwicklung Batch & Shell

Mitglied: weini79

weini79 (Level 1) - Jetzt verbinden

20.07.2012 um 11:13 Uhr, 3253 Aufrufe, 9 Kommentare

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
Mitglied: bastla
20.07.2012, aktualisiert um 13:45 Uhr
Hallo weini79 und willkommen im Forum!

Als Schnellschuss etwa so:
01.
@echo off & setlocal 
02.
set "Ein=exportNoHeader.txt" 
03.
set "Aus=exportNoHeaderSemicolon.txt" 
04.
 
05.
del "%Aus%" 2>nul 
06.
(for /f "usebackq delims=" %%i in ("%Ein%") do ( 
07.
    set "Zeile="     
08.
    for %%a in (%%i) do call :ProcessToken %%a 
09.
    setlocal enabledelayedexpansion 
10.
    echo !Zeile:~,-1! 
11.
    endlocal 
12.
))>>"%Aus%" 
13.
goto :eof 
14.
 
15.
:ProcessToken 
16.
set "Zeile=%Zeile%%1;" 
17.
goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: weini79
24.07.2012 um 08:42 Uhr
Hallo Bastla,

Vielen Dank für deine Antwort - ich bin jetzt schon einen Schritt weiter - habe aber noch ein kleines Problem, nämlich werden "," am Ende verschluckt - welchen ich aber für den Import in meine SQL Datenbank mittels bulkimport brauche(PS: ich hab jetzt vom AD nur noch DN, accountname und email herangezogen):

Zeilenausschnitt vorher:

"CN=EDVLager,OU=Common,OU=Users,OU=AT,DC=testdomain,DC=viennae",EDVLager,
"CN=Einkauf,OU=Common,OU=Users,OU=AT,DC=testdomain,DC=vienna",einkauf,procurement@test.com
"CN=Info,OU=Common,OU=Users,OU=AT,DC=testdomain,DC=vienna",info,
"CN=Office RU,OU=Common,OU=Users,OU=AT,DC=testdomain,DC=vienna",officeru,office-ru@test.com

Zeilenausschnitt nachher:
"CN=EDVLager,OU=Common,OU=Users,OU=AT,DC=testdomain,DC=vienna";EDVLager
"CN=Einkauf,OU=Common,OU=Users,OU=AT,DC=testdomain,DC=vienna";einkauf;procurement@test.com
"CN=Info,OU=Common,OU=Users,OU=AT,DC=testdomain,DC=vienna";info
"CN=Office RU,OU=Common,OU=Users,OU=AT,DC=testdomain,DC=vienna";officeru;office-ru@test.com

Könntest du mir da nocheinmal helfen?

Vielen Dank.
weini79
Bitte warten ..
Mitglied: bastla
24.07.2012 um 09:58 Uhr
Hallo weini79!

Ändere die Zeile 10 auf
echo !Zeile!
Grüße
bastla
Bitte warten ..
Mitglied: weini79
24.07.2012 um 10:07 Uhr
YESSSSS - Strike Super Danke -noch eine kurze Frage - mein Script sieht jetzt so aus: ADExport.bat:

csvde -f export.txt -l sAMAccountName,mail -d "OU=Users, OU=AT, dc=testdomain, dc=vienna" -r objectClass=user

findstr /V /C:"DN" export.txt > exportNoHeader.txt

@echo off & setlocal

set "Datei=c:\adexport\exportNoHeader.txt

@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!
endlocal
))>>"%Aus%"
goto :eof

:ProcessToken
set "Zeile=%Zeile%%1;"
goto :eof

sqlcmd -i Bulkimport.sql



der letzte Befehl der Bulkimport wird aber jetzt nicht mehr ausgeführt, muss ich den Bulkimport irgendwo anders plazieren, oder muss ich mit 2 bat Dateien arbeiten?
Bitte warten ..
Mitglied: bastla
24.07.2012 um 10:57 Uhr
Hallo weini79!

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
Bitte warten ..
Mitglied: weini79
24.07.2012 um 11:45 Uhr
Hallo Bastla - peinlich.

Danke - und sorry wegen der Code-Formatierung
Bitte warten ..
Mitglied: weini79
24.07.2012 um 11:59 Uhr
So jetzt hab ich noch eine Kleinigkeit - es wäre mir ja egal, weil das kann ich am SQL auch lösen, aber er macht halt jetzt überall hinten ein ";" - auch in den Zeilen wo vorher keines war:

"CN=EDVLager,OU=Common,OU=Users,OU=AT,DC=testdomain,DC=vienna";EDVLager;
"CN=Einkauf,OU=Common,OU=Users,OU=AT,DC=testdomain,DC=vienna";einkauf;procurement@test.com;
"CN=Info,OU=Common,OU=Users,OU=AT,DC=testdomain,DC=vienna";info;
"CN=Office RU,OU=Common,OU=Users,OU=AT,DC=testdomain,DC=vienna";officeru;office-ru@test.com;

brauchen täte ich nur:

"CN=EDVLager,OU=Common,OU=Users,OU=AT,DC=testdomain,DC=vienna";EDVLager;
"CN=Einkauf,OU=Common,OU=Users,OU=AT,DC=testdomain,DC=vienna";einkauf;procurement@test.com
"CN=Info,OU=Common,OU=Users,OU=AT,DC=testdomain,DC=vienna";info;
"CN=Office RU,OU=Common,OU=Users,OU=AT,DC=testdomain,DC=vienna";officeru;office-ru@test.com

hättest du da auch eine Idee?
Bitte warten ..
Mitglied: bastla
24.07.2012 um 13:38 Uhr
Hallo weini79!
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)
01.
@echo off & setlocal 
02.
set "Exp=export.txt" 
03.
set "Ein=exportNoHeader.txt" 
04.
set "Aus=exportNoHeaderSemicolon.txt" 
05.
set "Datei=c:\adexport\exportNoHeader.txt 
06.
 
07.
csvde -f "%Exp%" -l sAMAccountName,mail -d "OU=Users, OU=AT, dc=testdomain, dc=vienna" -r objectClass=user 
08.
 
09.
findstr /VC:"DN" "%Exp%">"%Ein%" 
10.
 
11.
del "%Aus%" 2>nul 
12.
(for /f "usebackq delims=" %%i in ("%Ein%") do ( 
13.
    set "EinZeile=%%i" 
14.
    set "Zeile=" 
15.
    for %%a in (%%i) do call :ProcessToken %%a 
16.
    setlocal enabledelayedexpansion 
17.
    if "!EinZeile:~-1!"==";" (echo !Zeile!) else (echo !Zeile:~,-1%!) 
18.
    endlocal 
19.
))>>"%Aus%" 
20.
 
21.
sqlcmd -i Bulkimport.sql 
22.
goto :eof 
23.
 
24.
:ProcessToken 
25.
set "Zeile=%Zeile%%1;" 
26.
goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: weini79
24.07.2012 um 14:59 Uhr
pfeift - Vielen Dank.
Thanks a lot
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Powershell - In Textdatei suchen und ersetzen (5)

Frage von Raaja89 zum Thema Batch & Shell ...

Windows Server
gelöst Active Directory Zertifikatdienste - Dienst kann nicht gestartet werden (1)

Frage von chb1982 zum Thema Windows Server ...

Windows Userverwaltung
Active Directory - OU Anordnung und Aufbau (9)

Frage von nightwishler zum Thema Windows Userverwaltung ...

Neue Wissensbeiträge
Batch & Shell

Batch als Dienst bei Systemstart ohne Anmeldung ausführen

Tipp von tralveller zum Thema Batch & Shell ...

Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

(1)

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Peripheriegeräte

Was beachten bei der Wahl einer USV Anlage im Serverschrank

(9)

Tipp von zetboxit zum Thema Peripheriegeräte ...

Heiß diskutierte Inhalte
Exchange Server
Exchange 2016 Standard Server 2012 R2 Hetzner Mail (36)

Frage von Datsspeed zum Thema Exchange Server ...

Verschlüsselung & Zertifikate
Mit Veracrypt eine zweite interne (non-system) Festplatte verschlüsseln (10)

Frage von Bernulf zum Thema Verschlüsselung & Zertifikate ...

Internet Domänen
Nameserver ein Geist? (7)

Frage von zelamedia zum Thema Internet Domänen ...

Video & Streaming
Kamera mit 24-7 auf Website hat Aussetzer (6)

Frage von Calvus zum Thema Video & Streaming ...