nowyouseeme93
Goto Top

BATCH: Sharename Pfad Berechtigten (auch Gruppen) und die letzte Änderung in Batch Skript auslesen

Hallo ihr Lieben,

mein erster Teil zu der Frage wie ich Sharenamen und Pfad aus net share oder wmic win32_share lese und in txt file ausgebe wurde schon gelöst. Jetzt kommt das schwierige:

über net share "Share name" in cmd wird mir angezeigt wer die Berechtigung hat und welche z.B Read

ich brauche jetzt für jedes Share die Berechtigungen und muss es in meiner txt Datei als TOKEN 3 einfügen. Damit kann ich das später leicht über Exel auslesen.

soweit ich weiss, muss ich mit einer FOR Schleife arbeiten. Er soll alle Sharenamen durchgehen und die Berechtigung + Zugriff merken und es anschließend in einer txt file ausgeben

Meine Idee war dass er beim Durchlauf noch den Sharenamen mitnimmt damit man später beim zuordnen über den Sharenamen einfach an das Ziel kommt.

mein bisheriger Code ist:

for /f "delims= " %%a in ('wmic share get Name^,Path ^| findstr "."') do @echo %%a>>C:\shares.txt

in meiner txt Datei sieht es etwa so aus

Share Path
Ordner 1 C:\Ordner11
Ordner 2 H:\File\test


nun muss an dritter Stelle in jeder Zeile die Benutzer stehen die die Berechtigung besitzen und an der vierten Stelle der Zugriff z.B. READ

Am Ende muss aus der txt file eine csv erstellt werden damit alle Ergebnisse in Excel tabellarisch angezeigt werden können.

Danke schonmal im Voraus für eure Hilfe und Mühe

Viele Grüße

nowyouseeme93

Content-Key: 282513

Url: https://administrator.de/contentid/282513

Printed on: April 19, 2024 at 03:04 o'clock

Mitglied: 114757
114757 Sep 10, 2015 updated at 15:21:06 (UTC)
Goto Top
Moin,
da isser wieder ...
Da musst du dir mit Batch aber erst mal einen abbrechen ;-P:
@echo off & setlocal ENABLEDELAYEDEXPANSION
(for /f "skip=1 tokens=1,2,3 delims=," %%a in ('wmic share get Name^,Path /format:csv ^| findstr "."') DO @(  
	set rights=
	for /f "skip=6 tokens=1,2,3 delims=, " %%d in ('net share "%%b" ^|findstr /iv "erfolgreich"') DO @(  
		if "%%f" == "" (  
			set user=%%d
			set right=%%e
		) else (
			set user=%%e
			set right=%%f
		)
		set "rights=!rights![!user!,!right!]"  
	)
	echo "%%b";"%%c";"!rights!"  
))>"C:\shares.csv"  
Gruß jodel32

p.s. Bitte schreib auf den Wisch für deinen Lehrer (c) by administrator.de face-big-smile
Member: nowyouseeme93
nowyouseeme93 Sep 11, 2015 at 12:25:20 (UTC)
Goto Top
Vielen Dank Jodel32

schon mal ein kleiner Fortschritt für mich danke.

es hat so geklappt wie ich es wollte. Ist es aber auch möglich statt "skip=6" eine Variable für die Zeile setzen z.B. für Berechtigung oder Permissions sodass er nicht die ersten 6 Zeilen übersprigt sondern nach einen bestimmten Wort sucht ?

und dann habe ich noch gemerkt sobald es mehrere Berechtigungen gibt, liefert es mir falsche Ergebnisse

Im Token 3 ist dann das Ergebnis so:

User1, FULL
User1, READ

obwohl er bei READ -> User2 ausgeben sollte

Gruß