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, 3238 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 ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Windows Server
gelöst Active Directory File Extension - Associated Program (11)

Frage von adm2015 zum Thema Windows Server ...

Windows 8
gelöst Active Directory Default User.v2 Profile - Windows 8.1 Apps Error (4)

Frage von adm2015 zum Thema Windows 8 ...

Windows Server
Active Directory sinnvoll für kleine Firma (15)

Frage von WolfPeano zum Thema Windows Server ...

Windows Server
gelöst Verschlüsselungsmethode Active-Directory Domänen Usern (4)

Frage von User79 zum Thema Windows Server ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...