User durch eine Batch auslesen
Hallo zusammen,
ich möchte gerne von einem Server die User in Ihren Benutzergruppen auslesen und zur Auswertung in eine Textdatei schreiben. Mein Script klappt auch schon recht gut, aber leider gibt es auch Benutzergruppen, die in Ihrem Namen Leerzeichen beinhalten. Diese erfasst mein Script leider nicht und ich weiß auch keine Abhilfe.
@echo off & setlocal
REM Schritt 1) Variablen erstellen
REM ===========================================================
set server = SERVERNAME
set gruppen=D:\admin\localgroups.txt
set gruppenliste=D:\admin\localgroups_listing.txt
set benutzer=D:\admin\user_output.txt
REM Schritt 2) ggf alte Dateiausgaben löschen
REM ===========================================================
if exist %gruppen% del %gruppen%
if exist %gruppenliste% del %gruppenliste%
if exist %benutzer% del %benutzer%
REM Schritt 3) Localgroups auslesen
REM ===========================================================
Net Localgroup %server% >>%gruppen%
REM Schritt 4) Datei mit den Localgroups untereinanderschreiben
REM ===========================================================
for %%a in (%gruppen%) do (
echo aus Datei %%a:
for /F "delims=* tokens=1 skip=2" %%i in ('find "*" %%a') do @echo %%i >%%~na.tfw>>%gruppenliste%
for /F "delims=* tokens=2 skip=2" %%i in ('find "*" %%a') do @echo %%i >%%~na.tfw>>%gruppenliste%
for /F "delims=* tokens=3 skip=2" %%i in ('find "*" %%a') do @echo %%i >%%~na.tfw>>%gruppenliste%
)
REM Schritt 4a) Datei mit den unterschriebenen Localgroups sortieren
REM ===========================================================
sort %gruppenliste% >> %gruppen%
REM Schritt 5) Benutzergruppen mit User in Datei schreiben
REM ===========================================================
for /f %%i IN (%gruppen%) DO net localgroup %%i >> %benutzer%
Schreibe ich im Schritt 5 statt 'net localgroup %%i >> %benutzer%' den String 'net localgroup "Backup Operators" >> %benutzer%' würde er diese Benutzergruppe auslesen.
Viele Dank für eure Mühe
ich möchte gerne von einem Server die User in Ihren Benutzergruppen auslesen und zur Auswertung in eine Textdatei schreiben. Mein Script klappt auch schon recht gut, aber leider gibt es auch Benutzergruppen, die in Ihrem Namen Leerzeichen beinhalten. Diese erfasst mein Script leider nicht und ich weiß auch keine Abhilfe.
@echo off & setlocal
REM Schritt 1) Variablen erstellen
REM ===========================================================
set server = SERVERNAME
set gruppen=D:\admin\localgroups.txt
set gruppenliste=D:\admin\localgroups_listing.txt
set benutzer=D:\admin\user_output.txt
REM Schritt 2) ggf alte Dateiausgaben löschen
REM ===========================================================
if exist %gruppen% del %gruppen%
if exist %gruppenliste% del %gruppenliste%
if exist %benutzer% del %benutzer%
REM Schritt 3) Localgroups auslesen
REM ===========================================================
Net Localgroup %server% >>%gruppen%
REM Schritt 4) Datei mit den Localgroups untereinanderschreiben
REM ===========================================================
for %%a in (%gruppen%) do (
echo aus Datei %%a:
for /F "delims=* tokens=1 skip=2" %%i in ('find "*" %%a') do @echo %%i >%%~na.tfw>>%gruppenliste%
for /F "delims=* tokens=2 skip=2" %%i in ('find "*" %%a') do @echo %%i >%%~na.tfw>>%gruppenliste%
for /F "delims=* tokens=3 skip=2" %%i in ('find "*" %%a') do @echo %%i >%%~na.tfw>>%gruppenliste%
)
REM Schritt 4a) Datei mit den unterschriebenen Localgroups sortieren
REM ===========================================================
sort %gruppenliste% >> %gruppen%
REM Schritt 5) Benutzergruppen mit User in Datei schreiben
REM ===========================================================
for /f %%i IN (%gruppen%) DO net localgroup %%i >> %benutzer%
Schreibe ich im Schritt 5 statt 'net localgroup %%i >> %benutzer%' den String 'net localgroup "Backup Operators" >> %benutzer%' würde er diese Benutzergruppe auslesen.
Viele Dank für eure Mühe
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 111517
Url: https://administrator.de/contentid/111517
Ausgedruckt am: 22.11.2024 um 22:11 Uhr
17 Kommentare
Neuester Kommentar
Moin,
irgendwie hab ich grad einen Hänger....
das passt doch gar nicht...
(außer du hättest eine lokale Gruppe, die "SERVERNAME" - oder den Parameter dahinter) lautet.
Anyway...
hast du mal probiert?
gruß
irgendwie hab ich grad einen Hänger....
set server = SERVERNAME
undNet Localgroup %server% >>%gruppen%
das passt doch gar nicht...
(außer du hättest eine lokale Gruppe, die "SERVERNAME" - oder den Parameter dahinter) lautet.
Anyway...
for /f %%i IN (%gruppen%) DO net localgroup "%%i" >> %benutzer%
hast du mal probiert?
gruß
Zitat von @naduah:
Dank für deine Antwort:
für SERVERNAME muss der Name oder die IP vom Server auf dem die cmd-Datei laufen soll eingetragen werden.
Dank für deine Antwort:
für SERVERNAME muss der Name oder die IP vom Server auf dem die cmd-Datei laufen soll eingetragen werden.
Gib mal:
Net Localgroup /?
in einer Dosbox ein.Und du bekommst eine Ähnliche Ausgabe wie:
NET LOCALGROUP
[Gruppenname [/COMMENT:"Text"]][/DOMAIN]
Gruppenname {/ADD [/COMMENT:"Text"]|/DELETE} [/DOMAIN]
Gruppenname Name [ ...] {/ADD|/DELETE} [/DOMAIN]
heraus, das du ähnlich ja bereits "erfolgreich" einsetzt:[Gruppenname [/COMMENT:"Text"]][/DOMAIN]
Gruppenname {/ADD [/COMMENT:"Text"]|/DELETE} [/DOMAIN]
Gruppenname Name [ ...] {/ADD|/DELETE} [/DOMAIN]
'net localgroup "Backup Operators" >> %benutzer%'
- dort steht nichts von "Server" oder dessen IP Gruß
Servus,
wie Bastla schon richtig geschrieben hat:
Klartext: Trennzeichen=keines
Und wie ich dir versuche zu erklären - schau mal in deine Datei:
Ist ein Irrtum deinerseits - den du via Net Localgroup /? auch als Fehler identifizieren kannst
Gruß
wie Bastla schon richtig geschrieben hat:
Da in einer "for /f"-Schleife Leerzeichen und TAB defaultmäßige Trennzeichen sind:
Wird durch "delims=" u.a auch das Leerzeichen nicht als Trennzeichen erkannt.Klartext: Trennzeichen=keines
Und wie ich dir versuche zu erklären - schau mal in deine Datei:
D:\admin\localgroups.txt
..wenn dein Script immer noch das obige ist - ist die leer - denn für SERVERNAME muss der Name oder die IP vom Server auf dem die cmd-Datei laufen soll eingetragen werden.Ist ein Irrtum deinerseits - den du via Net Localgroup /? auch als Fehler identifizieren kannst
Gruß
ok,
wie gesagt bei meinen System(en) ist das IP oder Servername nicht notwendig.
editiere mal:
Gruß
wie gesagt bei meinen System(en) ist das IP oder Servername nicht notwendig.
for /f "delims=" %%i IN (%gruppen%) DO net localgroup %%i >> %benutzer%
infor /f "delims=" %%i IN (%gruppen%) DO net localgroup "%%i" >> %benutzer%
type %benutzer% && pause
Dann solltest du sehen, was und hoffentlich incl. Backup Operators und nicht nur Backup in der Datei steht.type %benutzer% && pause
Gruß
Hallo naduah!
Der Stern stört - daher:
Ansonsten bin ich auch etwas verwundert, dass
auf einem W2000-Server (wie ich annehme) tatsächlich funktionieren sollte ...
Grüße
bastla
[Edit] Leerzeichen für "delims" ergänzt [/Edit]
Der Stern stört - daher:
for /f "delims=* " %%i IN (%gruppen%) DO net localgroup %%i >> %benutzer%
net localgroup %server%
Grüße
bastla
[Edit] Leerzeichen für "delims" ergänzt [/Edit]
Hallo naduah!
Meine Vermutung Richtung "Server2000" kam daher, dass Du 3 Spalten einsammeln wolltest - ab 2003 werden die Gruppen nur in einer Spalte ausgegeben.
Mit dem fehlenden Leerzeichen hast Du natürlich Recht - ich ändere das oben.
Zum Erstellen der Datei %gruppen% sollte aber eigentlich genügen:
Grüße
bastla
Meine Vermutung Richtung "Server2000" kam daher, dass Du 3 Spalten einsammeln wolltest - ab 2003 werden die Gruppen nur in einer Spalte ausgegeben.
Mit dem fehlenden Leerzeichen hast Du natürlich Recht - ich ändere das oben.
Zum Erstellen der Datei %gruppen% sollte aber eigentlich genügen:
net localgroup|find "*">%gruppen%
bastla
Servus,
nun hab ich dein Script mal selber ausprobiert und so wie unten funktioniert es - obwohl die Ausgabe evtl. noch ausbaufähig wäre.
Meine extra für diesen zweck angelegte Gruppe Hans und Franz - wird so wunderherrlichbar ausgelesen
gruß
nun hab ich dein Script mal selber ausprobiert und so wie unten funktioniert es - obwohl die Ausgabe evtl. noch ausbaufähig wäre.
rem @echo off & setlocal
REM Schritt 1) Variablen erstellen
REM ===========================================================
set server = SERVERNAME
set gruppen=C:\script\localgroup\localgroups.txt
set gruppenliste=C:\script\localgroup\localgroups_listing.txt
set benutzer=C:\script\localgroup\user_output.txt
REM Schritt 2) ggf alte Dateiausgaben löschen
REM ===========================================================
if exist %gruppen% del %gruppen%
if exist %gruppenliste% del %gruppenliste%
if exist %benutzer% del %benutzer%
REM Schritt 3) Localgroups auslesen
REM ===========================================================
Net Localgroup >>%gruppen%
pause
REM Schritt 4) Datei mit den Localgroups untereinanderschreiben
REM ===========================================================
for %%a in (%gruppen%) do (
echo aus Datei %%a:
for /F "delims=* tokens=1 skip=2" %%i in ('find "*" %%a') do echo "%%i" >%%~na.tfw>>%gruppenliste%
for /F "delims=* tokens=2 skip=2" %%i in ('find "*" %%a') do echo "%%i" >%%~na.tfw>>%gruppenliste%
for /F "delims=* tokens=3 skip=2" %%i in ('find "*" %%a') do echo "%%i" >%%~na.tfw>>%gruppenliste%
)
REM Schritt 4a) Datei mit den unterschriebenen Localgroups sortieren
REM ===========================================================
sort %gruppenliste% > %gruppen%
REM Schritt 5) Benutzergruppen mit User in Datei schreiben
REM ===========================================================
for /f "delims=" %%i IN (%gruppen%) DO net localgroup %%i >> %benutzer%
endlocal
Meine extra für diesen zweck angelegte Gruppe Hans und Franz - wird so wunderherrlichbar ausgelesen
gruß
Servus,
das war dann ja wohl eine schwere Geburt
Try this
Mir ging irgendwann mal der Überblick verloren...
Das ist mein Output:
gruß
das war dann ja wohl eine schwere Geburt
Try this
rem @echo off &setlocal
REM Schritt 1) Variablen erstellen
REM ===========================================================
set server = SERVERNAME
set gruppen=C:\script\localgroup\localgroups.txt
set gruppenliste=C:\script\localgroup\localgroups_listing.txt
set benutzer=C:\script\localgroup\user_output.txt
REM Schritt 2) ggf alte Dateiausgaben löschen
REM ===========================================================
if exist %gruppen% del %gruppen%
if exist %gruppenliste% del %gruppenliste%
if exist %benutzer% del %benutzer%
if exist %benutzer%.ini del %benutzer%.ini
REM Schritt 3) Localgroups auslesen
REM ===========================================================
net localgroup|find "*">%gruppen%
for %%a in (%gruppen%) do (
for /F "delims=* tokens=1 skip=2" %%i in ('find "*" %%a') do @echo %%i>%%~na.tfw>>%gruppenliste%)
REM Schritt 4a) Datei mit den unterschriebenen Localgroups sortieren
REM ===========================================================
sort %gruppenliste% /o %gruppen%
REM Schritt 5) Benutzergruppen mit User in Datei schreiben
REM ===========================================================
for /f "delims=*" %%i IN (%gruppen%) DO @echo "%%i" && net localgroup "%%i" >> %benutzer%
find /v "Der Befehl" %benutzer% > %benutzer%.ini
type %benutzer%.ini
pause
Mir ging irgendwann mal der Überblick verloren...
Das ist mein Output:
> Aliasname Hans und Franz
> Beschreibung
>
> Mitglieder
>
> ---------------------------------------------
> Franz und Hans
gruß
... bzw noch etwas reduziert (wenn W2000) kein Thema mehr ist:
Das "ausgefhrt" in der Zeile 20 wäre noch durch einen passenden Begriff aus der engl. Bestätigungsmeldung zu ersetzen ...
Grüße
bastla
@echo off & setlocal
REM Schritt 1) Variablen erstellen
REM ===========================================================
set gruppen=C:\script\localgroup\localgroups.txt
set benutzer=C:\script\localgroup\user_output.txt
REM Schritt 2) ggf alte Dateiausgaben löschen
REM ===========================================================
if exist %gruppen% del %gruppen%
if exist %benutzer% del %benutzer%
REM Schritte 3), 4a) Localgroups auslesen und sortieren
REM ===========================================================
for /f "delims=*" %%i in ('net localgroup^|find "*"^|sort') do >>%gruppen% echo %%i
REM Schritt 5) Benutzergruppen mit User in Datei schreiben
REM ===========================================================
for /f "delims=" %%i in (%gruppen%) do (
net localgroup "%%i"|findstr /v "ausgefhrt ----"
echo ###############################################################################
)>>%benutzer%
Grüße
bastla