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

User durch eine Batch auslesen

Frage Entwicklung Batch & Shell

Mitglied: naduah

naduah (Level 1) - Jetzt verbinden

16.03.2009, aktualisiert 13:19 Uhr, 4389 Aufrufe, 17 Kommentare

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
Mitglied: 60730
16.03.2009 um 13:41 Uhr
Moin,

irgendwie hab ich grad einen Hänger....

set server = SERVERNAME
und
Net 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ß
Bitte warten ..
Mitglied: naduah
16.03.2009 um 14:28 Uhr
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.

das %%i in Hochkommas zu setzen habe ich bereits probiert - negativ
Bitte warten ..
Mitglied: bastla
16.03.2009 um 14:46 Uhr
Hallo naduah und willkommen imForum!

Da in einer "for /f"-Schleife Leerzeichen und TAB defaultmäßige Trennzeichen sind:
for /f "delims=" %%i IN (%gruppen%) DO net localgroup "%%i" >> %benutzer%
Grüße
bastla
Bitte warten ..
Mitglied: 60730
16.03.2009 um 15:00 Uhr
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.

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:
'net localgroup "Backup Operators" >> %benutzer%'
- dort steht nichts von "Server" oder dessen IP

Gruß
Bitte warten ..
Mitglied: naduah
16.03.2009 um 15:32 Uhr
Sorry, leider habe immer noch keinen Erfolg

bei

for /f "delims=" %%i IN (%gruppen%) DO net localgroup "%%i" >> %benutzer%

bekomme ich nun ein leeres Blatt.

Was macht denn der Befehl delims eigentlich??
Bitte warten ..
Mitglied: 60730
16.03.2009 um 15:37 Uhr
Servus,

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ß
Bitte warten ..
Mitglied: naduah
16.03.2009 um 17:17 Uhr
Hallo Timo,
ich habe mich leider verkehrt ausgedrückt.
Das ganze Script funktioniert. Natürlich ist, statt SERVERNAME die Rechnername bei mir eingetragen z.B. w5de8ncki99 (kann aber auch die IP rein 174.23.4.7 - irgendwie so.
Die localgroups.txt (variable %gruppen%) wird auch gefüllt, wie z.B.

*Administrators
*Backup Operators
*meineGBG
usw

In der letzten Schleife wird nun mit dem Befehl:

for /f "delims=" %%i IN (%gruppen%) DO net localgroup %%i >> %benutzer%

diese localgroups.txt ausgelesen und mit dem Befehl net localgroup die User ausgelesen.

Funktioniert auch mit *Administrators und *meineGBG, aber nicht mit *Backup Operators.
Dort erkennt er nur noch Backup - und die Gruppe kennt er natürlich nicht.

Das ist mein Problem. Leider bin ich nun nicht mehr bei der Arbeit. Hier habe ich leider nur VISTA und der will die CMD nicht ausführen.
Bitte warten ..
Mitglied: 60730
16.03.2009 um 17:50 Uhr
ok,

wie gesagt bei meinen System(en) ist das IP oder Servername nicht notwendig.

editiere mal:
for /f "delims=" %%i IN (%gruppen%) DO net localgroup %%i >> %benutzer%
in
for /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.

Gruß
Bitte warten ..
Mitglied: bastla
16.03.2009 um 19:11 Uhr
Hallo naduah!

Der Stern stört - daher:
for /f "delims=* " %%i IN (%gruppen%) DO net localgroup %%i >> %benutzer%
Ansonsten bin ich auch etwas verwundert, dass
net localgroup %server%
auf einem W2000-Server (wie ich annehme) tatsächlich funktionieren sollte ...

Grüße
bastla

[Edit] Leerzeichen für "delims" ergänzt [/Edit]
Bitte warten ..
Mitglied: naduah
17.03.2009 um 12:27 Uhr
hallo zusammen,
erst einmal danke für eure Mühe.

Ich habe mein Script jetzt vereinfacht, um Missverständnisse auszuräumen.

vorerst:
@Timo: dein letzter Befehl läuft, aber ohne die Gruppe mit dem Leerzeichen
@bastla: vergiss das * ich habe es herausgenommen, unten in der txt-datei standen alle ohne * drinnen
übrigens es handelt sich um einen Window Server 2003. - üsste nicht hinter dem = kein BLANK stehen? ( "delims= "), damit klar ist welche er nicht berücksichtigen soll.

meine %gruppen%-datei habe ich vorerst auf folgende Benutzergruppen beschränkt:
Administrators
Backup Operators
CDV_Sh_AP410981
CT_Int_FTP_Kosten
Alle werden ausgelesen nur nicht der zweite.

Nun habe ich folgenden Befehl angewendet:
FOR /F "delims= " %%i IN (%gruppen%) DO %%i >> %benutzer%
pause
Dann spukt mir das DOS-Fenster heraus:
Der Befehl "Administratos" ist ....usw
Der Befehl "Backup" ist ....usw
Der Befehl "CDV_Sh_AP410981" ist ....usw

Ein Zeichen, dass hier bereits die zweite Gruppe verstümmelt ist.
Bitte warten ..
Mitglied: bastla
17.03.2009 um 13:31 Uhr
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:
net localgroup|find "*">%gruppen%
Grüße
bastla
Bitte warten ..
Mitglied: 60730
17.03.2009 um 13:57 Uhr
Servus,

nun hab ich dein Script mal selber ausprobiert und so wie unten funktioniert es - obwohl die Ausgabe evtl. noch ausbaufähig wäre.

01.
rem @echo off & setlocal 
02.
 
03.
REM Schritt 1) Variablen erstellen 
04.
REM =========================================================== 
05.
set server = SERVERNAME 
06.
set gruppen=C:\script\localgroup\localgroups.txt 
07.
set gruppenliste=C:\script\localgroup\localgroups_listing.txt 
08.
set benutzer=C:\script\localgroup\user_output.txt 
09.
 
10.
REM Schritt 2) ggf alte Dateiausgaben löschen 
11.
REM =========================================================== 
12.
if exist %gruppen% del %gruppen% 
13.
if exist %gruppenliste% del %gruppenliste% 
14.
if exist %benutzer% del %benutzer% 
15.
 
16.
REM Schritt 3) Localgroups auslesen 
17.
REM =========================================================== 
18.
Net Localgroup >>%gruppen% 
19.
pause 
20.
REM Schritt 4) Datei mit den Localgroups untereinanderschreiben 
21.
REM =========================================================== 
22.
for %%a in (%gruppen%) do ( 
23.
echo aus Datei %%a: 
24.
for /F "delims=* tokens=1 skip=2" %%i in ('find "*" %%a') do echo "%%i" >%%~na.tfw>>%gruppenliste% 
25.
for /F "delims=* tokens=2 skip=2" %%i in ('find "*" %%a') do echo "%%i" >%%~na.tfw>>%gruppenliste% 
26.
for /F "delims=* tokens=3 skip=2" %%i in ('find "*" %%a') do echo "%%i" >%%~na.tfw>>%gruppenliste% 
27.
28.
REM Schritt 4a) Datei mit den unterschriebenen Localgroups sortieren 
29.
REM =========================================================== 
30.
sort %gruppenliste% > %gruppen% 
31.
 
32.
REM Schritt 5) Benutzergruppen mit User in Datei schreiben 
33.
REM =========================================================== 
34.
for /f "delims=" %%i IN (%gruppen%) DO net localgroup %%i >> %benutzer% 
35.
endlocal
Meine extra für diesen zweck angelegte Gruppe Hans und Franz - wird so wunderherrlichbar ausgelesen

gruß
Bitte warten ..
Mitglied: naduah
17.03.2009 um 14:55 Uhr
Hei,
@bastla
Du hast gar nicht so schlecht geraten, dieses Script hat bis vor kurzem auf einem Server 2000 gelaufen, nun sind wir auf den 2005 umgezogen mit englischer Version.
Deine Abkürzung hat gut hingehauen, alleding mit doppelten > und in der nächstne Zeile Muss ich "delims=*" beachten. Nur das Leerzeichen mache weiterhin Probleme.

@Timo
Dein Script habe ich noch einmal komplett kopiert und nur bei den Pfaden angepasst. Leider kein Erfolg.

Da ich festgestellt habe, dass bei mir bereit im %%i die Verkrüppelung geschied, bin ich am überlegen in der %gruppen%-datei am Anfang sowie am Ende Zeichen einzusetzen, die ich eventuell über "delims=xyz" herauszufinden, um zu bestimmen dasss das was dazwischen sitzt die Gruppe ist.
Bitte warten ..
Mitglied: naduah
17.03.2009 um 15:00 Uhr
Ich nochmal,
kann man eigentlich irgendwie sichtbar machen was beim Befehl:

for /f "delims=*" %%i IN (%gruppen%) DO net localgroup %%i >> %benutzer%

bei <IN (%gruppen%) > eigentlich ankommt?
Bitte warten ..
Mitglied: 60730
17.03.2009 um 16:57 Uhr
Servus,

das war dann ja wohl eine schwere Geburt
Try this
01.
rem @echo off &setlocal 
02.
REM Schritt 1) Variablen erstellen 
03.
REM =========================================================== 
04.
set server = SERVERNAME 
05.
set gruppen=C:\script\localgroup\localgroups.txt 
06.
set gruppenliste=C:\script\localgroup\localgroups_listing.txt 
07.
set benutzer=C:\script\localgroup\user_output.txt 
08.
 
09.
REM Schritt 2) ggf alte Dateiausgaben löschen 
10.
REM =========================================================== 
11.
if exist %gruppen% del %gruppen% 
12.
if exist %gruppenliste% del %gruppenliste% 
13.
if exist %benutzer% del %benutzer% 
14.
if exist %benutzer%.ini del %benutzer%.ini 
15.
 
16.
REM Schritt 3) Localgroups auslesen 
17.
REM =========================================================== 
18.
net localgroup|find "*">%gruppen% 
19.
for %%a in (%gruppen%) do ( 
20.
for /F "delims=* tokens=1 skip=2" %%i in ('find "*" %%a') do @echo %%i>%%~na.tfw>>%gruppenliste%) 
21.
 
22.
REM Schritt 4a) Datei mit den unterschriebenen Localgroups sortieren 
23.
REM =========================================================== 
24.
sort %gruppenliste% /o %gruppen% 
25.
 
26.
REM Schritt 5) Benutzergruppen mit User in Datei schreiben 
27.
REM =========================================================== 
28.
for /f "delims=*" %%i IN (%gruppen%) DO @echo "%%i" && net localgroup "%%i" >> %benutzer% 
29.
find /v "Der Befehl" %benutzer% > %benutzer%.ini 
30.
type %benutzer%.ini 
31.
pause
Mir ging irgendwann mal der Überblick verloren...

Das ist mein Output:
01.
> Aliasname        Hans und Franz 
02.
> Beschreibung 
03.
>  
04.
> Mitglieder 
05.
>  
06.
> --------------------------------------------- 
07.
> Franz und Hans
gruß
Bitte warten ..
Mitglied: bastla
17.03.2009 um 18:24 Uhr
... bzw noch etwas reduziert (wenn W2000) kein Thema mehr ist:
01.
@echo off & setlocal 
02.
 
03.
REM Schritt 1) Variablen erstellen 
04.
REM =========================================================== 
05.
set gruppen=C:\script\localgroup\localgroups.txt 
06.
set benutzer=C:\script\localgroup\user_output.txt 
07.
 
08.
REM Schritt 2) ggf alte Dateiausgaben löschen 
09.
REM =========================================================== 
10.
if exist %gruppen% del %gruppen% 
11.
if exist %benutzer% del %benutzer% 
12.
 
13.
REM Schritte 3), 4a) Localgroups auslesen und sortieren 
14.
REM =========================================================== 
15.
for /f "delims=*" %%i in ('net localgroup^|find "*"^|sort') do >>%gruppen% echo %%i 
16.
 
17.
REM Schritt 5) Benutzergruppen mit User in Datei schreiben 
18.
REM =========================================================== 
19.
for /f "delims=" %%i in (%gruppen%) do ( 
20.
    net localgroup "%%i"|findstr /v "ausgefhrt ----" 
21.
    echo ###############################################################################	 
22.
)>>%benutzer%
Das "ausgefhrt" in der Zeile 20 wäre noch durch einen passenden Begriff aus der engl. Bestätigungsmeldung zu ersetzen ...

Grüße
bastla
Bitte warten ..
Mitglied: naduah
18.03.2009 um 09:01 Uhr
MoinMoin zusammen,
was soll ich sagen - ihr seit beide Spitze, that's what I want.

Nun kann ich die Administration und Überwachung meiner Server wieder über mein Coldfusion-web vornehmen. Ihr habt mir sehr geholfen, da diese Scriptsprache nicht meine Stärke ist.

Nochmals tausend Dank, es hat sich gelohnt diesem Forum beizutreten.
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Windows Systemdateien
gelöst Registry-Schlüssel per Batch auslesen und in Datei schreiben (9)

Frage von Philzip zum Thema Windows Systemdateien ...

Batch & Shell
Per Batch aktuell angemeldete User auslesen (1)

Frage von Peter32 zum Thema Batch & Shell ...

Batch & Shell
gelöst BATCH: Daten aus Textdatei auslesen und in neue Textdatei separieren (9)

Frage von Manuel1234 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows Server
Mailserver auf Windows Server 2012 (8)

Frage von StefanT81 zum Thema Windows Server ...

Backup
Clients als Server missbrauchen? (8)

Frage von 1410640014 zum Thema Backup ...

DSL, VDSL
DSL-Signal bewerten (8)

Frage von SarekHL zum Thema DSL, VDSL ...