Alle User und deren Gruppen in denen sie Mitglied sind (Batch AD)
Guten Tag,
ich muss ein BATCH Skript erstellen, das bewirkt, dass nach ausführen dieses Skripts eine .txt Datei erstellt wurde, in der alle User des Active Directories und deren Gruppen (also in denen die User Mitglied sind) verzeichnet sind. Als Beispiel dachte ich mir könnte dies so aussehen als Endresultat:
Falls dies nicht möglich innerhalb einer Datei ist, wär eine .txt Datei pro User auch okay. Und notwendig ist, dass man als Gruppen wirklich nur den Gruppennamen, also OHNE Pfad und Domäne sieht.
Ich habs mir sehr umständlich gemacht und pro User einen dsget Befehl angelegt, aber auch nicht geschafft dass man nur den Gruppennamen sieht zudem ist diese Variante extrem arbeitsaufwendig, müsste doch mit einer for-Schleife einfacher sein, oder?
(bin ein totaler Batch-Neuling, aber ich muss es mit Batch machen)
Grüße,
narthan
ich muss ein BATCH Skript erstellen, das bewirkt, dass nach ausführen dieses Skripts eine .txt Datei erstellt wurde, in der alle User des Active Directories und deren Gruppen (also in denen die User Mitglied sind) verzeichnet sind. Als Beispiel dachte ich mir könnte dies so aussehen als Endresultat:
UserGruppen.txt
Max Mustermann:
- Verkauf
- Einkauf
- Marketing
Fritz Müller:
- Verkauf
Ulla Meier:
- Marketing
- Verkauf
- Personalblabla
Falls dies nicht möglich innerhalb einer Datei ist, wär eine .txt Datei pro User auch okay. Und notwendig ist, dass man als Gruppen wirklich nur den Gruppennamen, also OHNE Pfad und Domäne sieht.
Ich habs mir sehr umständlich gemacht und pro User einen dsget Befehl angelegt, aber auch nicht geschafft dass man nur den Gruppennamen sieht zudem ist diese Variante extrem arbeitsaufwendig, müsste doch mit einer for-Schleife einfacher sein, oder?
(bin ein totaler Batch-Neuling, aber ich muss es mit Batch machen)
Grüße,
narthan
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 197507
Url: https://administrator.de/contentid/197507
Ausgedruckt am: 08.11.2024 um 11:11 Uhr
11 Kommentare
Neuester Kommentar
Hallo narthan!
Ist doch das selbe Strickmuster (auch hinsichtlich des Herausfilterns nur des Gruppennamens) wie hier (eben mit "
Grüße
bastla
Ist doch das selbe Strickmuster (auch hinsichtlich des Herausfilterns nur des Gruppennamens) wie hier (eben mit "
dsget user %1 -memberof
") ...Grüße
bastla
Hallo narthan!
Hast Du es denn etwa so versucht (Deinen Ansatz hast Du ja leider nicht gepostet)?
Als Variante ohne Unterprogramm:
Grüße
bastla
Hast Du es denn etwa so versucht (Deinen Ansatz hast Du ja leider nicht gepostet)?
@echo off & setlocal
set "File=UserGruppen.txt"
del "%File%" 2>nul
::User ermitteln und einzeln im Unterprogramm ":ProcessUser" weiterverarbeiten
for /f "delims=" %%a in ('dsquery user "Pfad,Domäne" -limit 400') do call :ProcessUser %%a
:: Batch hier beenden
goto :eof
:ProcessUser
:: Benutzer steht in %1
:: Benutzernamen ermitteln (steht nach "CN" und "=" und vor ",") und in Datei schreiben
for /f "tokens=2 delims==," %%i in (%1) do >>"%File%" echo %%i:
:: Gruppenmitgliedschaften ermitteln und eintragen
for /f "tokens=2 delims==," %%i in ('dsget user %1 -memberof') do >>"%File%" echo - %%i
:: Leerzeile eintragen
>>"%File%" echo(
:: Rücksprung in das Hauptprogramm
goto :eof
@echo off & setlocal
set "File=UserGruppen.txt"
del "%File%" 2>nul
for /f "delims=" %%a in ('dsquery user "Pfad,Domäne" -limit 400') do (
REM Benutzer steht in %%a
REM Benutzernamen ermitteln und in Datei schreiben
for /f "tokens=2 delims==," %%i in (%%a) do >>"%File%" echo %%i:
REM Gruppenmitgliedschaften ermitteln und eintragen
for /f "tokens=2 delims==," %%i in ('dsget user %%a -memberof') do >>"%File%" echo - %%i
REM Leerzeile eintragen
>>"%File%" echo(
)
bastla
Zitat von @bastla:
Hallo narthan!
Hast Du es denn etwa so versucht (Deinen Ansatz hast Du ja leider nicht gepostet)?
Als Variante ohne Unterprogramm:
Grüße
bastla
Hallo narthan!
Hast Du es denn etwa so versucht (Deinen Ansatz hast Du ja leider nicht gepostet)?
@echo off & setlocal
> set "File=UserGruppen.txt"
> del "%File%" 2>nul
> ::User ermitteln und einzeln im Unterprogramm ":ProcessUser" weiterverarbeiten
> for /f "delims=" %%a in ('dsquery user "Pfad,Domäne" -limit 400') do call :ProcessUser %%a
> :: Batch hier beenden
> goto :eof
>
> :ProcessUser
> :: Benutzer steht in %1
> :: Benutzernamen ermitteln (steht nach "CN" und "=" und vor ",") und in Datei schreiben
> for /f "tokens=2 delims==," %%i in (%1) do >>"%File%" echo %%i:
> :: Gruppenmitgliedschaften ermitteln und eintragen
> for /f "tokens=2 delims==," %%i in ('dsget user %1 -memberof') do >>"%File%" echo - %%i
> :: Leerzeile eintragen
> >>"%File%" echo(
> :: Rücksprung in das Hauptprogramm
> goto :eof
>
@echo off & setlocal
> set "File=UserGruppen.txt"
> del "%File%" 2>nul
> for /f "delims=" %%a in ('dsquery user "Pfad,Domäne" -limit 400') do (
> REM Benutzer steht in %%a
> REM Benutzernamen ermitteln und in Datei schreiben
> for /f "tokens=2 delims==," %%i in (%%a) do >>"%File%" echo %%i:
> REM Gruppenmitgliedschaften ermitteln und eintragen
> for /f "tokens=2 delims==," %%i in ('dsget user %%a -memberof') do >>"%File%" echo - %%i
> REM Leerzeile eintragen
> >>"%File%" echo(
> )
>
bastla
@bastla:
Hast Du evtl. bei der Variante mit Unterprogramm nicht evtl. eine Klammer vergessen?
Weil in Zeile 16 wird die Klammer geöffnet und nirgendwo geschlossen.
:fragend:
Gruss Penny.
@ Penny
Grüße
bastla
Hast Du evtl. bei der Variante mit Unterprogramm nicht evtl. eine Klammer vergessen?
Hab ich nicht - diese Klammer bewirkt (wie auch ein Punkt oder etwa ein Backslash) die Ausgabe einer Leerzeile und wurde von jeb-the-batcher empfohlen ...Grüße
bastla
Hallo narthan!
Du solltest Dir das Tutorial zur FOR-Schleife von Friemler einmal ansehen ...
Grüße
bastla
Du solltest Dir das Tutorial zur FOR-Schleife von Friemler einmal ansehen ...
Grüße
bastla
@bastla
wusste ich jetzt nicht. Naja mit Batches bin ich nicht mehr so fit. Danke für die Aufklärung.
Gruss Penny.
wusste ich jetzt nicht. Naja mit Batches bin ich nicht mehr so fit. Danke für die Aufklärung.
Gruss Penny.