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

User durch eine Batch auslesen

Mitglied: naduah

naduah (Level 1) - Jetzt verbinden

16.03.2009, aktualisiert 13:19 Uhr, 4433 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 ..
Ähnliche Inhalte
Batch & Shell
Per Batch aktuell angemeldete User auslesen
Frage von Peter32Batch & Shell1 Kommentar

Hallo, ich habe einen Windows-Rechner mit 3 Benutzerkonten auf den man per Remotedesktop zugreifen kann (und man kann sich ...

Windows Server
User aus Gruppe auslesen mit Powershell
Frage von KEFHVDIWindows Server4 Kommentare

Hallo, ich benötige Hilfe. Ich bin leider nicht sehr begabt mit der Powershell. Ich muss alle User aus einer ...

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 ...

Batch & Shell
Mit batch zeilen auslesen
gelöst Frage von keksegrillerBatch & Shell2 Kommentare

Hallihallo, ich fange gerade an mit batch-Dateien zu arbeiten und komme trotz stundenlangem ausprobieren und googlen leider nicht mehr ...

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 14 StundenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 1 TagTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 1 TagSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 1 TagSicherheit9 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Sicherheit
Meltdown und Spectre: Die machen uns alle was vor
Information von FrankSicherheit25 Kommentare

Aktuell sieht es in den Medien so aus, als hätten die Hersteller wie Intel, Microsoft und Co den aktuellen ...

Netzwerke
Packet loss bei "InternetLeitungsvollauslastung"
gelöst Frage von Freak-On-SiliconNetzwerke17 Kommentare

Servus; Ja der Titel klingt komisch, is aber so. Wenn die Internetleitung voll ausgelastet ist, hab ich extreme packet ...

Ubuntu
Ubuntu - Starter für nicht vertrauenswürdige Anwendungen
Frage von adm2015Ubuntu17 Kommentare

Hallo zusammen, Ich verwende derzeit die Ubuntu Versionen 17.10 bzw. im Test 18.04. Ich habe mehrere .desktop Dateien in ...

Windows 10
Automatische daten kopieren, USB zu USB unter Win10 im Hintergrund
Frage von DerEisigeWindows 1016 Kommentare

Hallo Leute, ich bin auf der Suche nach einem Skript, dass von einem USB Stick automatisch nach dem einstecken ...