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
GELÖST

tool zum auselsen der user anzahl der gruppen in AD

Frage Entwicklung Batch & Shell

Mitglied: koluschkiB

koluschkiB (Level 1) - Jetzt verbinden

27.05.2009, aktualisiert 11:44 Uhr, 12285 Aufrufe, 15 Kommentare

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

01.
 
02.
@ echo off 
03.
 
04.
 
05.
dsget group cn="gruppenname",cn=users,dc=finaleweisheit,dc=de -members -expand >>c:\habla.txt 
06.
 
07.
 
08.
 
09.
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:

01.
@echo off 
02.
 
03.
dsquery group -name GRUPPENNAME |dsget group -members >c:\test.txt 
04.
 
05.
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
Mitglied: xm-bit
27.05.2009 um 12:06 Uhr
Hi,

da kann ich immer wieder nur folgendes empehlen:

http://www.wintotal.de/Software/index.php?id=2554

Das beste Dokumentationswerkzeug fürs AD.

Mit freundlichen Grüßen

Sascha
Bitte warten ..
Mitglied: koluschkiB
27.05.2009 um 12:31 Uhr
hey SasH

wie du aus meinem endlos text entnehemen kannst, hab ich diese programm bereits selbst gefunden und getestet.
ich soll aber ein skript schreiben, somit bringt es mir nichts eine software zu nutze die damit absolut nichts zu tun hat

trotzdem danke für deine hilfe

gruße
Bitte warten ..
Mitglied: koluschkiB
27.05.2009 um 12:34 Uhr
hey nochmal

hab auf deinen link geklickt und konnte unten lesen das dieses tool skriptgesteutert verwendet werden kann

kann es per .bat skirpt gesteuert werden? weist du was darüber
Bitte warten ..
Mitglied: koluschkiB
27.05.2009 um 12:41 Uhr
nachtrag

die frage mit dem skript hat sich erleidgt, JOSE ist nicht zu gebrauchen, da ich die namen kriege und nicht die anzahl der user

(jetzt weit her geholt)
wenn man in einer gruppe 1000user hat, wer soll die zählen?!

gruß
Bitte warten ..
Mitglied: bastla
27.05.2009 um 14:32 Uhr
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:
01.
for /f "delims=:" %%i in ('findstr /n "=" "c:\habla.txt"') do set "Anzahl=%%i" 
02.
if defined Anzahl ( 
03.
    echo %Anzahl% User in der Gruppe (Datei) 
04.
) else ( 
05.
    echo Keine User enthalten! 
06.
)
Grüße
bastla

[Edit] Nachtrag falsch gelesen ... [/Edit]
Bitte warten ..
Mitglied: holzholer
27.05.2009 um 14:41 Uhr
bastla war schneller

Hallo,
ich hätte es ungefähr so gelöst:

01.
[Edit2] fehlerhaften code gelöscht[/Edit2]
Das zählt dir aber nur die Anzahl der Zeilen in der "x.tmp".

Grüßle

Edit: einfacherer code

[Edit2] fehlerhaften code gelöscht. nimmt den von bastla. [/Edit2]
Bitte warten ..
Mitglied: bastla
27.05.2009 um 14:50 Uhr
@holzholer
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:
01.
set /A line=0 
02.
For /F "delims=" %%i in (x.tmp) do set /a line+=1 
03.
echo %line%
[Edit2] Dein "einfacherer" Code würde nur den Inhalt der letzten Zeile liefern. [/Edit2]

Grüße
bastla
Bitte warten ..
Mitglied: holzholer
27.05.2009 um 14:54 Uhr
Danke, ich habs zwischenzeitlich auch gemerkt und daher (anders) gelöst.

Danke bastla und Grüße,
holzholer
Bitte warten ..
Mitglied: koluschkiB
27.05.2009 um 15:54 Uhr
hey wir, also der kolegge und ich haben schon einwenig rumgebastelt. mit der selben idee wie du sie hattest, also mit dem zählen der zeilen usw.

so sieht es zur zeit aus

01.
@echo off 
02.
 
03.
  
04.
 
05.
if not exist c:\Gruppen\nul ( 
06.
 
07.
            md c:\Gruppen\ 
08.
 
09.
10.
 
11.
  
12.
 
13.
::Alle Gruppen der Domäne auslesen und temporär in einer Logdatei speichern. 
14.
 
15.
dsquery group cn=users,dc=azubi,dc=int >>c:\groups.log 
16.
 
17.
  
18.
 
19.
for /f "delims=, tokens=1" %%a in (c:\groups.log) do call :groups %%a 
20.
 
21.
            goto ende 
22.
 
23.
             
24.
 
25.
:groups  
26.
 
27.
  
28.
 
29.
            ::Vorbereitende Variable für die Gruppennamen setzen 
30.
 
31.
            set pregroup=%1  
32.
 
33.
             
34.
 
35.
            ::Bestimmen der Gruppennamen 
36.
 
37.
            set group=%pregroup:~4,-1% 
38.
 
39.
             
40.
 
41.
            ::Ausgabe der Gruppennamen 
42.
 
43.
            echo %group% >>c:\gruppen\"%group%".log 
44.
 
45.
            echo ----------------------------- >>c:\gruppen\"%group%".log 
46.
 
47.
             
48.
 
49.
            ::Ausführen des dsget-Befehls mit allen Gruppennamen 
50.
 
51.
            dsget group CN="%group%",CN=Users,DC=azubi,DC=int -members 2>>nul >>c:\members.log 
52.
 
53.
                         
54.
 
55.
                        for /f "delims=, tokens=1" %%a in (c:\members.log) do call :members %%a 
56.
 
57.
                                   goto ende 
58.
 
59.
                         
60.
 
61.
                                   :members 
62.
 
63.
                                                
64.
 
65.
                                               ::Vorbereitende Variable für die Mitglieder der Gruppe 
66.
 
67.
                                               set premember=%1 
68.
 
69.
                                                
70.
 
71.
                                               ::Bestimmen der Mitglieder der Gruppe 
72.
 
73.
                                               set member=%premember:~4% 
74.
 
75.
                                                
76.
 
77.
                                               ::Ausgabe der Mitglieder 
78.
 
79.
                                               echo %member% >>c:\gruppen\"%group%".log 
80.
 
81.
  
82.
 
83.
goto :eof 
84.
 
85.
  
86.
 
87.
:ende 
88.
 
89.
  
90.
 
91.
::Counter auf 0 setzen 
92.
 
93.
Set /a "Counter=0" 
94.
 
95.
  
96.
 
97.
::Schleife zum zählen der Zeilen in den .log-Dateien 
98.
 
99.
for /f "delims= skip=3" %%a in (c:\gruppen\%group%.log) do set /a "counter+=1" 
100.
 
101.
                                                
102.
 
103.
            echo Anzahl der Mitglieder: %counter% >>c:\gruppen\"%group%".log 
104.
 
105.
  
106.
 
107.
del c:\groups.log 2>>nul 
108.
 
109.
del c:\members.log 2>>nul 
110.
 
leider ist hier das problem, dass er nur die zeilen der logfiles ausliest, welche einen zusammenhängenden namen haben. dateien wie bsp. "dhcp admins" werden nicht richtig behandelt.
Bitte warten ..
Mitglied: Vargsvart
27.05.2009 um 15:59 Uhr
Hier spricht der Kollege.

Eine kleine Anmerkung noch:

01.
for /f "delims= skip=3" %%a in ("c:\gruppen\%group%.log") do set /a "counter+=1"
oder

01.
for /f "delims= skip=3" %%a in (c:\gruppen\%"group%".log) do set /a "counter+=1"
nützen nichts.
Bitte warten ..
Mitglied: holzholer
27.05.2009 um 16:13 Uhr
Hallo,

Wie bastla vorhin schon erwähnt hatte fehlt das "enable delayed expansion" damit er einen counter innerhalb einer Schleife hochzählen kann.

Grüße
Bitte warten ..
Mitglied: Vargsvart
27.05.2009 um 16:25 Uhr
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
Bitte warten ..
Mitglied: bastla
27.05.2009 um 16:56 Uhr
Hallo Vargsvart!

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
Bitte warten ..
Mitglied: Vargsvart
27.05.2009 um 17:06 Uhr
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
.
.
.
Bitte warten ..
Mitglied: Vargsvart
27.05.2009 um 17:27 Uhr
Ich habe soeben einen Workarround gefunden, der das Problem beseitigt.

Und zwar hat mir mein nettes Büchlein verraten, dass es folgendermaßen funktioniert:

01.
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
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Windows Server
gelöst Wie hieß das Tool nochmal um die AD Anzeige der Reiter zu erweitern? (7)

Frage von M.Marz zum Thema Windows Server ...

Batch & Shell
gelöst User und AD Gruppe finden - wie das Pferd aufzäumen (5)

Frage von H41mSh1C0R zum Thema Batch & Shell ...

Windows Server
gelöst AD-User einer AD-Gruppe auslesen und in ein File schreiben (15)

Frage von Estefania zum Thema Windows Server ...

Batch & Shell
gelöst AD-Felder für User mittels Powershell befüllen aus CSV-Datei (2)

Frage von Alex94G zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...