tool zum auselsen der user anzahl der gruppen in AD
ahoi
hab wieder ein problem, wo ich die lösung nicht wirklich finde. das problem ist, dass ich einen batch skript schreiben soll womit die anzahl der user in allen gruppen im AD ausgelesen werden sollen
nun zur genau beschreiben...
ich soll eine batch skript erstellen, dass wenn ich es starte alle gruppen quasi gescannt werden. der scann soll am ende mir sagen wieviele user in denn jeweiligen angelegten gruppen da sind.
hab schon hier bei admin.de hilfreiche tipps gefunden, die mich meiner lösung näher gebracht haben, aber das gewünschte ergebniss, war leider nicht dabei
hab folgende befehle schon erstellt, die auch soweit ganz funktionier
die user werden problemlos ausgelesen und ich kann in der angelegten .txt datei die namen einsehen... seo weit so gut
ein anderer versuch von mir:
bei diesem befehl habe ich aber weniger erfolg gehabt und man kann immer nur eine gruppe auslesen, wenn ich das richtig sehe.
meine aufageb ist es aber ein skript zu erstellen, womit man die ANZAHL der user in allen angelegten gruppen herausfindet und das ganze in einer txt datei dokumentiert
wenn man "X" user in einer gruppe hat, macht es keinen sinn sie einzelen zu zählen.
hab bereits das tool José gefunden, was aus sehr hilfreich ist. aber es entspricht leider nicht der vorstellen meines aufgaben gegebers.
gibt es ein tool, was man vorweg in ein skript einbauen kann (wie zb rmtshare oder sowas in der art) der mir die user und die anzahl der user ausliest und dokumentiert?
für eure hilfe wäre ich sehr dankbar
gruß
koluschkiB
hab wieder ein problem, wo ich die lösung nicht wirklich finde. das problem ist, dass ich einen batch skript schreiben soll womit die anzahl der user in allen gruppen im AD ausgelesen werden sollen
nun zur genau beschreiben...
ich soll eine batch skript erstellen, dass wenn ich es starte alle gruppen quasi gescannt werden. der scann soll am ende mir sagen wieviele user in denn jeweiligen angelegten gruppen da sind.
hab schon hier bei admin.de hilfreiche tipps gefunden, die mich meiner lösung näher gebracht haben, aber das gewünschte ergebniss, war leider nicht dabei
hab folgende befehle schon erstellt, die auch soweit ganz funktionier
@ echo off
dsget group cn="gruppenname",cn=users,dc=finaleweisheit,dc=de -members -expand >>c:\habla.txt
pause
die user werden problemlos ausgelesen und ich kann in der angelegten .txt datei die namen einsehen... seo weit so gut
ein anderer versuch von mir:
@echo off
dsquery group -name GRUPPENNAME |dsget group -members >c:\test.txt
pause
bei diesem befehl habe ich aber weniger erfolg gehabt und man kann immer nur eine gruppe auslesen, wenn ich das richtig sehe.
meine aufageb ist es aber ein skript zu erstellen, womit man die ANZAHL der user in allen angelegten gruppen herausfindet und das ganze in einer txt datei dokumentiert
wenn man "X" user in einer gruppe hat, macht es keinen sinn sie einzelen zu zählen.
hab bereits das tool José gefunden, was aus sehr hilfreich ist. aber es entspricht leider nicht der vorstellen meines aufgaben gegebers.
gibt es ein tool, was man vorweg in ein skript einbauen kann (wie zb rmtshare oder sowas in der art) der mir die user und die anzahl der user ausliest und dokumentiert?
für eure hilfe wäre ich sehr dankbar
gruß
koluschkiB
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 116911
Url: https://administrator.de/contentid/116911
Ausgedruckt am: 15.11.2024 um 15:11 Uhr
15 Kommentare
Neuester Kommentar
Hi,
da kann ich immer wieder nur folgendes empehlen:
http://www.wintotal.de/Software/index.php?id=2554
Das beste Dokumentationswerkzeug fürs AD.
mfg
Sascha
da kann ich immer wieder nur folgendes empehlen:
http://www.wintotal.de/Software/index.php?id=2554
Das beste Dokumentationswerkzeug fürs AD.
mfg
Sascha
Hallo koluschkiB!
Wenn Du schon eine Datei mit allen Usern hast, sollte es doch genügen, die Zeilen mit Usereinträgen (sollten ja alle ein "=" beinhalten) in dieser Datei zu zählen, etwa:
Grüße
bastla
[Edit] Nachtrag falsch gelesen ... [/Edit]
Wenn Du schon eine Datei mit allen Usern hast, sollte es doch genügen, die Zeilen mit Usereinträgen (sollten ja alle ein "=" beinhalten) in dieser Datei zu zählen, etwa:
for /f "delims=:" %%i in ('findstr /n "=" "c:\habla.txt"') do set "Anzahl=%%i"
if defined Anzahl (
echo %Anzahl% User in der Gruppe (Datei)
) else (
echo Keine User enthalten!
)
bastla
[Edit] Nachtrag falsch gelesen ... [/Edit]
@holzholer
[Edit2] Dein "einfacherer" Code würde nur den Inhalt der letzten Zeile liefern. [/Edit2]
Grüße
bastla
Das zählt dir aber nur die Anzahl der Zeilen in der "x.tmp".
Leider nicht mal das (Stichwort "delayedExpansion") [Edit] Antwort auf einen vormals anders lautenden Kommentar ... [/Edit]; so würde es klappen:set /A line=0
For /F "delims=" %%i in (x.tmp) do set /a line+=1
echo %line%
Grüße
bastla
Hallo,
das Skript zählt, so wie es ist in allen Dateien, die einen zusammenhängenden Namen haben (z.B. DnsAdmins.log) hoch. Befinden sich in so einer Datei 3 User, so ist auch das Ergebnis korrekt -> 3.
Allerdings kann er Dateien, welche einen nicht zusammenhängenden Namen tragen (z.B. DHCP Administrators.log) nicht richtig verarbeiten und gibt somit immer 0 als Ergebnis aus. (Ist ja klar, er kann sie nicht lesen und somit bleibt der Counter auf 0).
Aber was muss getan werden, dass in der Zeile 99 des oben geposteten Skripts auch die Berechnung funktioniert, wenn die Variable %group% gerade den Wert "DHCP Administrators" besitzt?
Gruß
Varg
das Skript zählt, so wie es ist in allen Dateien, die einen zusammenhängenden Namen haben (z.B. DnsAdmins.log) hoch. Befinden sich in so einer Datei 3 User, so ist auch das Ergebnis korrekt -> 3.
Allerdings kann er Dateien, welche einen nicht zusammenhängenden Namen tragen (z.B. DHCP Administrators.log) nicht richtig verarbeiten und gibt somit immer 0 als Ergebnis aus. (Ist ja klar, er kann sie nicht lesen und somit bleibt der Counter auf 0).
Aber was muss getan werden, dass in der Zeile 99 des oben geposteten Skripts auch die Berechnung funktioniert, wenn die Variable %group% gerade den Wert "DHCP Administrators" besitzt?
Gruß
Varg
Hallo Vargsvart!
In Zeile 99 wird der Pfad zur Gruppen-Logdatei ohne Anführungszeichen verwendet - besser:
Was mir sonst so beim Drüberschauen auffiele ([Edit] aber nach genauerer Betrachtung - hatte ein weiteres "
Die Zeilen 91 bis 103 sollten noch vor Zeile 83 platziert werden, da ja die Mitgliederanzahl für jede Gruppe einzeln ermittelt werden soll (bzw, falls nicht, enthält die Variable %group% beim Sprung in den Programmteil
Damit diese Anzahl auch wirklich stimmt, muss die Temporärdatei "C:\members.log" für jede Gruppe neu geschrieben werden, daher wäre in Zeile 51 nur
Grüße
bastla
In Zeile 99 wird der Pfad zur Gruppen-Logdatei ohne Anführungszeichen verwendet - besser:
for /f "usebackq skip=3 delims=" %%a in ("c:\gruppen\%group%.log") do set /a "counter+=1"
Was mir sonst so beim Drüberschauen auffiele ([Edit] aber nach genauerer Betrachtung - hatte ein weiteres "
goto Ende
" übersehen - so nicht zutrifft ... [/Edit]:Die Zeilen 91 bis 103 sollten noch vor Zeile 83 platziert werden, da ja die Mitgliederanzahl für jede Gruppe einzeln ermittelt werden soll (bzw, falls nicht, enthält die Variable %group% beim Sprung in den Programmteil
:Ende
den letzten Gruppennamen).Damit diese Anzahl auch wirklich stimmt, muss die Temporärdatei "C:\members.log" für jede Gruppe neu geschrieben werden, daher wäre in Zeile 51 nur
>c:\members.log
anstelle von >>c:\members.log
zu verwenden.Grüße
bastla
Moin bastla,
das Setzen von "" führt leider, wie ich auch bereits geschrieben habe, zu keinem Erfolg. Eher im Gegenteil. Es wird so in garkeiner Datei mehr einer Berechnung der Zeilen vorgenommen.
Was das verschieben der Zeilen angeht:
Setze ich die Zeilen 91 bis 103 vor die Zeile 83, so schreibt das Skript mir nach jedem eingetragenen User die Ausgabe der Anzahl.
in etwa so:
Test
User1
Anzahl der User: 1
User2
Anzahl der User 3
User3
Anzahl der User 5
.
.
.
das Setzen von "" führt leider, wie ich auch bereits geschrieben habe, zu keinem Erfolg. Eher im Gegenteil. Es wird so in garkeiner Datei mehr einer Berechnung der Zeilen vorgenommen.
Was das verschieben der Zeilen angeht:
Setze ich die Zeilen 91 bis 103 vor die Zeile 83, so schreibt das Skript mir nach jedem eingetragenen User die Ausgabe der Anzahl.
in etwa so:
Test
User1
Anzahl der User: 1
User2
Anzahl der User 3
User3
Anzahl der User 5
.
.
.
Ich habe soeben einen Workarround gefunden, der das Problem beseitigt.
Und zwar hat mir mein nettes Büchlein verraten, dass es folgendermaßen funktioniert:
Ich danke allen, die sich die Mühe gemacht haben uns bei der Fehlersuche zu helfen.
Gruß
Varg
Und zwar hat mir mein nettes Büchlein verraten, dass es folgendermaßen funktioniert:
for /f "delims= skip=2" %%a in ('type "c:\gruppen\%group%_%date%.log"') do set /a "counter+=1"
Ich danke allen, die sich die Mühe gemacht haben uns bei der Fehlersuche zu helfen.
Gruß
Varg