AD Share NTFS Berechtigungen ausgeben lassen
Hallo Leute,
ich würde mir gerne für eine große Anzahl von Shares die NTFS Berechtigungen ausgeben lassen.
Dabei ist zu beachten, dass für die Shares (ca. 3000) meistens komplette Gruppen die Berechtigungen erhalten.
Ziel ist es hier nicht nur die Gruppe(n) mit Ihrer Berechtigung ausgeben zu lassen, sondern die Mitglieder der jeweiligen Gruppe.
Beispiel:
Share 1 -> GruppeAB -> Schreibrechte
In GruppeAB sind BenutzerA und BenutzerB
Share 1 -> GruppeXY -> Leserechte.
In GruppeXY sind BenutzerA und BenutzerB
Am Ende soll
a) eine Datei mit allen Shares und allen jeweils zugehörigen Gruppen bzw. Mitgliedern der Gruppen und deren Berechtigungen als csv oder xml herauskommen
b) eine Datei für jeden Share mit den jeweils zugehörigen Gruppen bzw. Mitgliedern der Gruppen und dessen Berechtigungen als csv oder xml herauskommen
Ist dies irgendwie möglich?
Ich habe auch schon mit nem Skript angefangen. Hier werden mir alle Shares angezeigt, die AD Objekte die darauf Berechtigungen haben und welche das sind.
Jetzt muss ich nur noch aus den angezeigten Gruppen die jeweiligen Mitglieder rausziehen können.
$pfad = "\\def-svr2\e$"
$partition = Get-ChildItem -Path $pfad
$schleife = foreach($obj in $partition){
Get-Acl $obj.FullName
Get-Acl $obj.FullName |
Select-Object -ExpandProperty Access |
Select-Object @{n="Name";e={ $obj.fullname }},
@{n="AD Objekt";e={ $_.identityreference }},
@{n="Berechtigungen";e={ $_.filesystemrights }}
}
$schleife #| Out-File c:\Komplettliste2.txt
Danke für die Hilfe im Voraus
Kilrathi
ich würde mir gerne für eine große Anzahl von Shares die NTFS Berechtigungen ausgeben lassen.
Dabei ist zu beachten, dass für die Shares (ca. 3000) meistens komplette Gruppen die Berechtigungen erhalten.
Ziel ist es hier nicht nur die Gruppe(n) mit Ihrer Berechtigung ausgeben zu lassen, sondern die Mitglieder der jeweiligen Gruppe.
Beispiel:
Share 1 -> GruppeAB -> Schreibrechte
In GruppeAB sind BenutzerA und BenutzerB
Share 1 -> GruppeXY -> Leserechte.
In GruppeXY sind BenutzerA und BenutzerB
Am Ende soll
a) eine Datei mit allen Shares und allen jeweils zugehörigen Gruppen bzw. Mitgliedern der Gruppen und deren Berechtigungen als csv oder xml herauskommen
b) eine Datei für jeden Share mit den jeweils zugehörigen Gruppen bzw. Mitgliedern der Gruppen und dessen Berechtigungen als csv oder xml herauskommen
Ist dies irgendwie möglich?
Ich habe auch schon mit nem Skript angefangen. Hier werden mir alle Shares angezeigt, die AD Objekte die darauf Berechtigungen haben und welche das sind.
Jetzt muss ich nur noch aus den angezeigten Gruppen die jeweiligen Mitglieder rausziehen können.
$pfad = "\\def-svr2\e$"
$partition = Get-ChildItem -Path $pfad
$schleife = foreach($obj in $partition){
Get-Acl $obj.FullName
Get-Acl $obj.FullName |
Select-Object -ExpandProperty Access |
Select-Object @{n="Name";e={ $obj.fullname }},
@{n="AD Objekt";e={ $_.identityreference }},
@{n="Berechtigungen";e={ $_.filesystemrights }}
}
$schleife #| Out-File c:\Komplettliste2.txt
Danke für die Hilfe im Voraus
Kilrathi
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 278126
Url: https://administrator.de/contentid/278126
Ausgedruckt am: 24.11.2024 um 21:11 Uhr
16 Kommentare
Neuester Kommentar
Guckst du hier:
Vergebene Rechte dokumentieren - Gibt es hierfür ein anwenderfreundliches Tool?
Für das Auslesen der Mitglieder einer Gruppe gibt's :
Get-AdGroupMember
Gruß jodel32
Vergebene Rechte dokumentieren - Gibt es hierfür ein anwenderfreundliches Tool?
Für das Auslesen der Mitglieder einer Gruppe gibt's :
Get-AdGroupMember
Gruß jodel32
Moin,
Geb doch einfach der Variablen accessrules eine neue Spalte und lese dir mit oben bereits genannten Befehl die Gruppenmitglieder aus, den Gruppennamen bekommst du ja dort mit $_.IdentityReference und feddich ist die Kiste
Gruß grexit
Geb doch einfach der Variablen accessrules eine neue Spalte und lese dir mit oben bereits genannten Befehl die Gruppenmitglieder aus, den Gruppennamen bekommst du ja dort mit $_.IdentityReference und feddich ist die Kiste
Gruß grexit
Naja du musst schon bestimmte Gruppen ausfiltern, oder eben die Accounts zur SID auflösen:
musst dich halt Schritt für Schritt ran arbeiten, hat ja keiner gesagt das es von selbst geht
# Username to SID
(New-Object System.Security.Principal.NTAccount("DEINUSERNAME")).Translate([System.Security.Principal.SecurityIdentifier]).Value
Du musst nur den Gruppennamen an dem Backslash "splitten" und nur den reinen Gruppennamen verwenden, dann klappt das
Hast Du da vllt. den entsprechenden Befehl bzw. die benötigten Befehle?
Ich weiß was Du meinst, aber z.B. mit -replace(...) wird es ja wohl kaum funktionieren nehme ich an?
doch das geht auch ,Ich weiß was Du meinst, aber z.B. mit -replace(...) wird es ja wohl kaum funktionieren nehme ich an?
Variante 1
$_.IdentityReference.toString() -replace '.*?\\(.*)','$1'
$_.IdentityReference.toString().split('\')[1]
($_.IdentityReference.toString() -Split '\\')[1]
Du hast die freie Wahl
Dann musst du jeweils noch ein toString() dazwischen setzen um das Objekt in einen String umzuwandeln
Bin leider im Moment auf dem Smartphone, ist oben alles korrigiert, sorry.
$_.IdentityReference.toString().split('\')[1]
Noch zur Info:
Enthalten deine Gruppen noch weitere verschachtelten Gruppen, kannst du diese alle mit dem Parameter -recursive auf einen Schlag auflösen lassen :
https://technet.microsoft.com/en-us/library/ee617193.aspx
Enthalten deine Gruppen noch weitere verschachtelten Gruppen, kannst du diese alle mit dem Parameter -recursive auf einen Schlag auflösen lassen :
https://technet.microsoft.com/en-us/library/ee617193.aspx
export-csv lautet das Stichwort
Du musst die Spalte mit select -Expand erst expandieren bevor du sie ausgeben kannst...
Mann das sind doch Powershell Grundlagen ...
Das hier macht das gewünschte
Mann das sind doch Powershell Grundlagen ...
Das hier macht das gewünschte
Get-AdGroupMember $_.IdentityReference.toString().split('\')[1] -recursive | select SamAccountName | export-csv 'C:\datei.csv' -NoType -Delimiter ";" -Encoding UTF8