Top-Themen

Aktuelle Themen (A bis Z)

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

Frage Entwicklung Batch & Shell

GELÖST

tool zum auselsen der user anzahl der gruppen in AD

Mitglied: koluschkiB

koluschkiB (Level 1) - Jetzt verbinden

27.05.2009, aktualisiert 11:44 Uhr, 13196 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.

mfg

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 ..
Ähnliche Inhalte
Windows Userverwaltung
AD Gruppen User auslesen
Frage von pgWindows Userverwaltung1 Kommentar

Guten Tag, ich bin auf der Suche nach einem Programm welches mit die User eines AD ausliest und mir ...

Windows Userverwaltung
AD User in eine Gruppe umwandeln - möglich?
Frage von NetzwerkDudeWindows Userverwaltung2 Kommentare

Moin, wer kennt es nicht, aus einem provisorium wird was großes und man schlägt sich dann mit altlasten rum ...

Windows Server
AD-User einer AD-Gruppe auslesen und in ein File schreiben
gelöst Frage von EstefaniaWindows Server15 Kommentare

Guten Abend. Ich habe eine Frage an Experten. Suche ein einfaches Script, wo mir AD-User einer von mir ausgewählten ...

Windows Userverwaltung
AD User wechsel Gruppe automatisch nach Datum
gelöst Frage von TutterWindows Userverwaltung4 Kommentare

Hallo an alle ich suche eine Möglichkeit eine User zu einem Stichtag automatisch die Gruppe wechseln zu lassen im ...

Neue Wissensbeiträge
CPU, RAM, Mainboards

Meltdown und Spectre: Intel zieht Microcode-Updates für Prozessoren zurück

Information von keine-ahnung vor 2 StundenCPU, RAM, Mainboards1 Kommentar

Moin, extrem lutztig. Nur gut, dass ich noch nicht beim Probanden-Bingo mitgemacht habe :-) LG, Thomas

Router & Routing

PfSense als Addon auf QNAP

Information von magicteddy vor 15 StundenRouter & Routing3 Kommentare

Moin, für Spielereien eine ganz nette Idee aber ich fürchte das soetwas auch als echte Firewall genutzt wird: In ...

Datenschutz

Teamviewer kommt für IoT-Geräte wie den Raspberry Pi

Information von magicteddy vor 22 StundenDatenschutz1 Kommentar

Moin, jetzt werden IoT Geräte endgültig zur Wanze? Anscheinend kann man auf einem Dashboard seine Geräte visualisieren Ich stelle ...

Microsoft

Letzte Updates für Win10 und Server2016 müssen bei Bedarf über den Update catalogue in den WSUS importiert werden!

Tipp von DerWoWusste vor 1 TagMicrosoft1 Kommentar

automatisch kommt da nichts an im WSUS und auch nicht im SCCM. Siehe Hinweise zum Bezug der jeweils neuesten ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Preis für Wartungsvertrag ok?
gelöst Frage von a-za-zNetzwerkmanagement23 Kommentare

Hallo! Mal ne Frage, weil ich mich mit dem akzeptablen Preis für einen Reaktionszeitvertrag nicht auskenne. Meine Firma hat ...

Windows Netzwerk
Ist ein Portforwarding auf einen PC ohne lauschendes Programm ein (großes) Sicherheitsproblem?
Frage von PluwimWindows Netzwerk13 Kommentare

Hallo zusammen, zur Fernwartung eines Rechners an einem anderen Ort nutze ich VNC. Da dieser Rechner einfach nur eine ...

Windows Server
TEMP-Profile
Frage von Forseti2003Windows Server13 Kommentare

Guten Morgen, wer kennt sie nicht, die lieben Temporären Benutzerprofile, vorallem immer dann, wenn man sie am wenigsten braucht. ...

Multimedia & Zubehör
Welches Tablet für die Verkäufer?
Frage von Hendrik2586Multimedia & Zubehör12 Kommentare

Guten Morgen meine Lieben, vielleicht könnt ihr mir ja helfen. Es geht um unsere Außendienstmitarbeiter /Verkäufer. Sie sollen demnächst ...