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, 3274 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 Report (7)

Frage von mah0ni zum Thema Windows Server ...

Windows Server
gelöst Migration Manager for Active Directory (3)

Frage von adrian138 zum Thema Windows Server ...

Windows Server
Active Directory-Verwaltungscenter macht Probleme (1)

Frage von MrFuzz zum Thema Windows Server ...

Neue Wissensbeiträge
Entwicklung

Exploit Development

Anleitung von burhanudinn123 zum Thema Entwicklung ...

Windows Update

Microsoft Update KB4034664 verursacht Probleme mit Multimonitor-Systemen

(1)

Tipp von beidermachtvongreyscull zum Thema Windows Update ...

Viren und Trojaner

CNC-Fräsen von MECANUMERIC werden (ggf.) mit Viren, Trojanern, Würmern ausgeliefert

(4)

Erfahrungsbericht von anteNope zum Thema Viren und Trojaner ...

Heiß diskutierte Inhalte
Netzwerkprotokolle
Leiten "dumme" Switches VLAN-Tags mit durch? (17)

Frage von coltseavers zum Thema Netzwerkprotokolle ...

E-Business
Wo tragt ihr eure privaten Termine ein? (13)

Frage von honeybee zum Thema E-Business ...

Batch & Shell
Batch zum suchen und verschieben von Verknüpfungen (12)

Frage von zeroblue2005 zum Thema Batch & Shell ...

Windows Server
Terminalserver starten willkürlich neu (12)

Frage von thaefliger zum Thema Windows Server ...