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, 5156 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
Windows 10

Powershell 5 BSOD

(2)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Windows Server
gelöst Problem nach DC-Installation unter Server 2012 R2 (9)

Frage von manuel1985 zum Thema Windows Server ...

Netzwerkgrundlagen
IPsec - .conf und .secret erstellen aus Gruppe und User (16)

Frage von MaxMLe zum Thema Netzwerkgrundlagen ...

Windows Server
gelöst Gruppenrichtlinien-Vorlage Office 2013 auf einem DC 2003 (5)

Frage von bluepython zum Thema Windows Server ...

RedHat, CentOS, Fedora
gelöst Erstellen von Desktopverknüpfungen und Anpassung der Taskleiste (2)

Frage von honeybee zum Thema RedHat, CentOS, Fedora ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...