AD-User mit mehrstelliger Nummer erstellen
Hallo,
ich sitze gerade vor einem Problem, wir haben ein Script (für die CMD) geschrieben, was automatisch das AD füllt.
wir nutzen folgen befehle dafür
for /l %%a in (1,1,23) do (
for /f "eol=; tokens=1-3 delims=," %%g in (%SCRIPTPATH%Abteilungen.txt) do (
dsadd user "cn=%%g_%%a,ou=Mitarbeiter,ou=%%g,ou=Kernabteilungen,ou=%STANDORT%,dc=%NETBIOSDOM%,dc=%NETBIOSTLD%" -samid %%g_%%a -upn %%g_%%a@%NETBIOSDOM%.AG -pwd Pa$$w0rd -memberof "cn=_G_%%g,ou=Gruppen,ou=%%g,ou=Kernabteilungen,ou=%STANDORT%,dc=%NETBIOSDOM%,dc=%NETBIOSTLD%" -mustchpwd no -disabled no
)
)
Nun wollen wir es besonders schön machen und möchten, das die Benutzer 1-9 mit 01 -09 angelegt werden
dazu müssten wir die lokale Variable in eine globale umwanden, aber wie machen wir das am bessten
wir haben schon den ganzen Tag probiert, bekommen die Variable jedoch nicht übergeben .
ich sitze gerade vor einem Problem, wir haben ein Script (für die CMD) geschrieben, was automatisch das AD füllt.
wir nutzen folgen befehle dafür
for /l %%a in (1,1,23) do (
for /f "eol=; tokens=1-3 delims=," %%g in (%SCRIPTPATH%Abteilungen.txt) do (
dsadd user "cn=%%g_%%a,ou=Mitarbeiter,ou=%%g,ou=Kernabteilungen,ou=%STANDORT%,dc=%NETBIOSDOM%,dc=%NETBIOSTLD%" -samid %%g_%%a -upn %%g_%%a@%NETBIOSDOM%.AG -pwd Pa$$w0rd -memberof "cn=_G_%%g,ou=Gruppen,ou=%%g,ou=Kernabteilungen,ou=%STANDORT%,dc=%NETBIOSDOM%,dc=%NETBIOSTLD%" -mustchpwd no -disabled no
)
)
Nun wollen wir es besonders schön machen und möchten, das die Benutzer 1-9 mit 01 -09 angelegt werden
dazu müssten wir die lokale Variable in eine globale umwanden, aber wie machen wir das am bessten
wir haben schon den ganzen Tag probiert, bekommen die Variable jedoch nicht übergeben .
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 259206
Url: https://administrator.de/forum/ad-user-mit-mehrstelliger-nummer-erstellen-259206.html
Ausgedruckt am: 11.04.2025 um 21:04 Uhr
9 Kommentare
Neuester Kommentar

Moin,
Beispiel:
Tutorial zur FOR-Schleife
Gruß jodel32
Beispiel:
@echo off & setlocal enabledelayedexpansion
for /f "eol=; tokens=1-3 delims=," %%g in (%SCRIPTPATH%Abteilungen.txt) do @(
for /L %%a in (1 1 23) do @(
set /a nummer=10%%a
set lfdnr=!nummer:~-2!
dsadd user "cn=%%g_!lfdnr!,ou=Mitarbeiter,ou=%%g,ou=Kernabteilungen,ou=%STANDORT%,dc=%NETBIOSDOM%,dc=%NETBIOSTLD%" -samid %%g_!lfdnr! -upn %%g_!lfdnr!^@%NETBIOSDOM%.AG -pwd Pa$$w0rd -memberof "cn=_G_%%g,ou=Gruppen,ou=%%g,ou=Kernabteilungen,ou=%STANDORT%,dc=%NETBIOSDOM%,dc=%NETBIOSTLD%" -mustchpwd no -disabled no
)
)
Gruß jodel32

Nur zum Verständnis, sehe ich das jetzt richtig das ihr pro Abteilung welche in der Textdatei stehen, 23 User erstellen wollt ?
Dann siehe oben die entsprechende Anpassung.
Folgende Zeile erstellt eine Zahl mit der Laufvariable der /L Schleife, somit ist bei einstelligen Zahlen sichergestellt das eine führende Null vorhanden ist.
Dann extrahiert die folgende Zeile immer die letzen zwei Stellen der obigen Zahl, welche nun der Variablen lfdnr zugewiesen werden.
Also im Beispiel ist die Laufvariable %%a = 8, dann wird die Variable nummer zu 108 und lfdnr wird dann zu 08 weil ja nur die letzen beiden Stellen der Zahl genommen werden 108
Bei 15 dann also 115
bei 20 dann 120
usw.
Diese Variable kannst du nun mit !lfdnr! in deinem dsadd Befehl benutzen.
Hoffe das war nun verständlich
Gruß jodel32
Dann siehe oben die entsprechende Anpassung.
Folgende Zeile erstellt eine Zahl mit der Laufvariable der /L Schleife, somit ist bei einstelligen Zahlen sichergestellt das eine führende Null vorhanden ist.
set /a nummer=10%%a
set lfdnr=!nummer:~-2!
Also im Beispiel ist die Laufvariable %%a = 8, dann wird die Variable nummer zu 108 und lfdnr wird dann zu 08 weil ja nur die letzen beiden Stellen der Zahl genommen werden 108
Bei 15 dann also 115
bei 20 dann 120
usw.
Diese Variable kannst du nun mit !lfdnr! in deinem dsadd Befehl benutzen.
Hoffe das war nun verständlich
Gruß jodel32

Wenn du die weiteren Variablen wie z.B. %NETBIOSDOM% innerhalb der FOR-Schleifen mit set setzt musst du sie anstatt mit Prozentzeichen mit Ausrufezeichen umschließen !NETBIOSDOM!.
Stichwort delayedexpansion.
Stichwort delayedexpansion.

Escape es mal zusätzlich mit einem Caret, dann müsste es gehen.
^@

bei Interesse, kann ich gern das Script zur verfügung stellen
Ich mach sowas lieber direkt mit Powershell,simples Beispiel (enthält jetzt nicht alles von dir oben, lässt sich aber genauso ergänzen)
$abteilungen = @('Abteilung1','Abteilung2')
$abteilungen | %{
$abteilung = $_
1..23 | %{New-Aduser "User_$($_)" -AccountPassword (Convertto-SecureString 'Pa$$word' -AsPlaintext -Force) -Path "OU=$abteilung,OU=Kernabteilungen,DC=domain,DC=local"}
}
http://technet.microsoft.com/de-de/library/ee617253.aspx
Powershell ist die Zukunft, ich würde mich daher eher damit beschäftigen, anstatt noch die alten Batch Befehle zu nutzen
Gruß jodel32