Benutzer mit den meisten Antworten
in einer Ordnerstruktur bestimmte ACEs aus Ordner-ACLs auslesen

Frage
-
Hallo,
ich habe ein Problem: ich habe mehrere Fileserver auf denen ich alte Nutzergruppen ausfindig machen will damit diese identifiziert, entfernt und letzten Endes aus dem AD gelöscht werden können. Ich habe schon so einiges versucht nachdem ich bei dem anfänglichen manuellen auslesen fast verblödet bin. Ich habe es zuerst mit AccessEnum aus den sysinternals-Tools versucht. Leider spuckt das Tool wirklich jede Berechtigung von jeder Datei aus und generiert dabei Textdateien von mehreren 100 MB. Dabei interessieren nur die Berechtigungsgruppen der ersten 3 Ordnerebenen, und davon auch nur die Domänengruppen die nicht auf "-r" oder "-m" enden. Außerdem sind auch nur die Gruppennamen interessant, die jeweiligen Berechtigungen etc. nicht. Bei den Scripts die ich mir angeschaut habe war keins dabei dass das Ergebnis in eine csv packt.
Leider bin ich weder in VBscript noch in Powershell derart bewandert (am besten passt die Beschreibung Anfänger) dass ich mir größere Scripts passend abwandeln könnte. Vor allem wie die Rekursionstiefe gesteuert werden könnte ist mir ein Rätsel. Die Suche hier im Forum und im Netz hat kaum weitergeholfen. Ich habe die Scriptressourcen durchsucht, aber leider nichts ähnliches gefunden was ich hätte anpassen können. die passenden cmdlets sind denke ich get-acl in Kombination mit get-childitem. Im Netz habe ich das hier z.B. gefunden:
$FilePath = "J:\Protokolle" $TestPath = "\\fileserver\user\Testuser\" dir $TestPath -recurse | where {$_.PsIsContainer} | Get-Acl | Format-Table path,owner,accesstostring | Export-csv "$FilePath\Folder-ACL.csv"
Das Script spuckt aber nur Datenmüll aus.
http://gallery.technet.microsoft.com/scriptcenter/405a12f6-fb57-4078-92fc-ff495f3e98be ist schon ganz okay wenn man die dauernden Popups abstellt, es spuckt halt nur eine htm aus und rekursiert bis in den tiefsten Ordner.
Ich hoffe ihr habt einen Tipp für mich. Vielen Dank schonmal! :-)
Antworten
-
http://social.technet.microsoft.com/Forums/en-US/ITCG/thread/6a254675-ed66-4ecc-895c-392841ac01ee/
sollte dir helfen wenn du es wirklich skripten möchtest.
Persönlich würde ich Rohdaten ziehen und dann mit Excel Filtern. Es gibt in Excel so tolle Textfilter in denen man mit Platzhaltern arbeiten kann und sich jegwede Kombination eines Pfades aufbauen, ausschließen kann.
- Als Antwort markiert Besieger Dienstag, 16. April 2013 05:42
-
Hallo,
wenn Du es wirklich einfach haben willst, nimmst Du das [File System Security PowerShell Module http://gallery.technet.microsoft.com/scriptcenter/1abd77a5-9c0b-4a2b-acef-90dbb2b84e85]. Hier hier ist das ganze dann ein Einzeiler:
dir -Recurse | Get-Access -Account <SID or Name> -ExcludeInherited
ExcludeInherited heißt, daß das cmdlet nur die Berechtigungen ausgibt, die auf dem jeweiligen Ordner gesetzt sind. Der geerbten sind dann ja nur redundante Informationen.
Wenn es Dir noch um effektrive Berechtigungen geht, gibt es noch das cmdlet Get-EffectiveAccess.
-Raimund
- Bearbeitet Raimund AndréeMicrosoft employee Montag, 15. April 2013 13:37
- Als Antwort markiert Besieger Dienstag, 16. April 2013 05:42
Alle Antworten
-
Mein schneller Vorschlag mittels Powershell
get-childitem -r | get-acl | Export-csv J:\Protokolle\Folder-ACL.csv
diese Rohdaten anschließend mit Excel bearbeiten. Das wird schneller gehen als das zu Scripten
Viele Grüße
Philipp
- Bearbeitet Philipp Halbedel Montag, 15. April 2013 11:04
-
Hallo Philipp,
Danke für deine Antwort! :-) Dieser Befehl tut in etwa das gleiche wie AccessEnum aus den Sysinternals-Tools. Wie schwierig ist es denn die Ausschlusskriterien (insbesondere das Rekursionstiefenlimit) zu scripten? Ich denke das geht schneller als diesen Datenberg abzutragen, da sitze ich mit Unterbrechungen schon 2 Wochen dran und bin noch nicht mal annähernd zu nem 1/3 fertig :-(
-
http://social.technet.microsoft.com/Forums/en-US/ITCG/thread/6a254675-ed66-4ecc-895c-392841ac01ee/
sollte dir helfen wenn du es wirklich skripten möchtest.
Persönlich würde ich Rohdaten ziehen und dann mit Excel Filtern. Es gibt in Excel so tolle Textfilter in denen man mit Platzhaltern arbeiten kann und sich jegwede Kombination eines Pfades aufbauen, ausschließen kann.
- Als Antwort markiert Besieger Dienstag, 16. April 2013 05:42
-
Hallo,
wenn Du es wirklich einfach haben willst, nimmst Du das [File System Security PowerShell Module http://gallery.technet.microsoft.com/scriptcenter/1abd77a5-9c0b-4a2b-acef-90dbb2b84e85]. Hier hier ist das ganze dann ein Einzeiler:
dir -Recurse | Get-Access -Account <SID or Name> -ExcludeInherited
ExcludeInherited heißt, daß das cmdlet nur die Berechtigungen ausgibt, die auf dem jeweiligen Ordner gesetzt sind. Der geerbten sind dann ja nur redundante Informationen.
Wenn es Dir noch um effektrive Berechtigungen geht, gibt es noch das cmdlet Get-EffectiveAccess.
-Raimund
- Bearbeitet Raimund AndréeMicrosoft employee Montag, 15. April 2013 13:37
- Als Antwort markiert Besieger Dienstag, 16. April 2013 05:42