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

Erstellen von Benutzerkonten auf einem DC per Batchfile

Frage Entwicklung Batch & Shell

Mitglied: Yurrderi

Yurrderi (Level 1) - Jetzt verbinden

08.11.2007, aktualisiert 15.11.2007, 5182 Aufrufe, 2 Kommentare

Hallo zusammen

Es geht um das automatisierte anlegen von Benutzerkonten auf einem AD.

Im Textfile steht folgendes drin, Benutzer, Firmenname,OU,Gruppe
Das ganze wird mit einem Batchfile ausgelesen, danach soll überprüft werden ob es die Gruppe und OU schon gibt oder ob diese noch angelegt werden muss.

Das Batchfile sieht folgendermaßen aus (Überprüfung ob OU vorhanden ist)
01.
FOR /F "tokens=2 delims=," %%i IN (users.txt) do dsget ou "ou=%%i,ou=Citrix,dc=domain,dc=local" & if %ERRORLEVEL% EQU 0 (echo OU existiert) ELSE dsadd ou "ou=%%i,ou=Citrix,dc=domain,dc=local"
(Überprüfung ob Gruppe vorhanden ist)
01.
FOR /F "tokens=2 delims=," %%i IN (users.txt) do dsget group CN=%%i,ou=Gruppe,dc=nass,dc=local & if %ERRORLEVEL% EQU 0 (echo Gruppe existiert) ELSE dsadd group -samid %%i "cn=%%i,ou=Gruppe,dc=domain,dc=local" -secgrp yes -scope G
(User anlegen)
01.
FOR /F "tokens=1,2,3,4,5 delims=, " %%i IN (users.txt) do dsadd user cn=%%i,ou=%%j,ou=Citrix,dc=nass,dc=local -samid %%i -fn %%k -ln %%l -pwd %%m -disabled no -memberof "cn=%%j,ou=Gruppe,dc=domain,dc=local"
Mein Problem ist das, dass Errorlevel nicht richtig ausgelesen wird. Es bleibt immer der letzte abfrage Wert stehen.

Beispiel:
In der users.txt stehen Benutzer für zwei verschiedene Firmen, die erste Firma ist noch nicht vorhanden aber die zweite schon.
Wenn ich nun das Script ausführe steht im Errorlevel 0 (für vorhanden) weil es ja die Firma wo als letztes im Textfile steht(und als letztes abgefragt wird) schon gibt.

Eigentlich sollte er ja für jede Zeile im Textfile den Errorlevel Wert auslesen.

Ich hoffe das ihr mir weiterhelfen könnt.

Gruß Patrick Nass
Mitglied: bastla
08.11.2007 um 15:44 Uhr
Hallo Yurrderi und willkommen im Forum!

Je nach weiterer Verarbeitung hättest Du zumindest zwei Möglichkeiten- zum Einen könntest Du bedingte Verknüpfungen der Art
01.
FOR /F "tokens=2 delims=," %%i IN (users.txt) do dsget ou "ou=%%i,ou=Citrix,dc=domain,dc=local" && (echo OU existiert) || dsadd ou "ou=%%i,ou=Citrix,dc=domain,dc=local"
verwenden, wobei der Teil nach "&&" bei einem Errorlevel 0 und der Teil nach "||" bei einem Errorlevel > 0 ausgeführt wird, oder Du könntest die Weiterverarbeitung an ein Unterprogramm delegieren, etwa:
01.
FOR /F "tokens=2 delims=," %%i IN (users.txt) do call :ProcessEntry "%%i" 
02.
... 
03.
... 
04.
goto :eof 
05.
 
06.
:ProcessEntry 
07.
dsget ou "ou=%~1,ou=Citrix,dc=domain,dc=local" 
08.
if %ERRORLEVEL% EQU 0 (echo OU existiert) ELSE dsadd ou "ou=%~1,ou=Citrix,dc=domain,dc=local" 
09.
goto :eof
Das Unterprogramm kannst Du als weiteren aufgerufenen (daher "call") Batch betrachten, wobei der übergebene Parameter ("%%i") wie üblich als %1 (oder %~1, um die umgebenden Anführungszeichen zu entfernen) verwendet wird.

Mit "goto :eof" wird das Unterprogramm beendet und zum Hauptprogramm zurückgesprungen, welches ebenfalls ein "goto :eof" zum Beenden benötigt, um nicht nochmals in das Unterprogramm zu laufen.

Grüße
bastla
Bitte warten ..
Mitglied: Yurrderi
15.11.2007 um 09:08 Uhr
Vielen dank, hat soweit funktioniert

Habe jetzt noch eine andere Frage.
Wir lesen die Benutzer anhand der txt Datei aus, gibt es eine möglich zu sagen, das die for Schleife erst bei der zweiten Zeile anfangen soll die Benutzer auszulesen?
Das man in der ersten Zeile z.B einen Kommentar rein schreiben kann.

Gruß Patrick
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
W32tm resync - ausführen in Batchfile mit den Windows Service Accout (6)

Frage von MatthiasPlc zum Thema Batch & Shell ...

Windows Server
gelöst Memberserver zum DC heraufstufen ohne den ursprünglichen DC (16)

Frage von ole2211 zum Thema Windows Server ...

Windows Userverwaltung
gelöst Wie verfahrt Ihr mit den Windows-Benutzerkonten und -dateien von ausgeschiedenen Mitarbeitern? (14)

Frage von Bl0ckS1z3 zum Thema Windows Userverwaltung ...

Neue Wissensbeiträge
Windows Tools

Zeit für Energiesparmodus, Bildschirmabschaltung etc. schnell anpassen

Anleitung von hannsgmaulwurf zum Thema Windows Tools ...

Linux Netzwerk

Ping und das einstellbare Bytepattern

(1)

Erfahrungsbericht von LordGurke zum Thema Linux Netzwerk ...

Windows Update

Microsoft Update KB4034664 verursacht Probleme mit Multimonitor-Systemen

(4)

Tipp von beidermachtvongreyscull zum Thema Windows Update ...

Heiß diskutierte Inhalte
Firewall
Richtige Grundeinstellungen der Pfsense für mein Netzwerk (14)

Frage von Spitzbube zum Thema Firewall ...

Switche und Hubs
gelöst Cisco 2960x Stacking über mehrere Etagen (12)

Frage von b3scher zum Thema Switche und Hubs ...