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, 5157 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 ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Sonstige Systeme
Adobe Acrobat Reader DC im Lesemodus starten (6)

Frage von bluepython zum Thema Sonstige Systeme ...

Exchange Server
gelöst Exchange 2013 dynamische verteilerliste mit mehreren recipientfiltern erstellen (8)

Frage von blackhawk17 zum Thema Exchange Server ...

Switche und Hubs
HP Aruba 2920 ACCESS-LIST erstellen? (8)

Frage von Henning32 zum Thema Switche und Hubs ...

Windows 10
Acrobat Reader DC - schwarze Streifen im Ausdruck (9)

Frage von DerWoWusste zum Thema Windows 10 ...

Heiß diskutierte Inhalte
DSL, VDSL
gelöst DSL 200m verlängern (16)

Frage von Angela44 zum Thema DSL, VDSL ...

Windows Server
SBS 2011 Standard virtualisieren (12)

Frage von HeinrichM zum Thema Windows Server ...

LAN, WAN, Wireless
Per Script auf UniFi-controller zugreifen und WPA2-Key ändern (11)

Frage von Winfried-HH zum Thema LAN, WAN, Wireless ...

Backup
Datensicherung ARCHIV (11)

Frage von fautec56 zum Thema Backup ...