Benutzer mit den meisten Antworten
AD Share NTFS Berechtigungen ausgeben lassen

Frage
-
Hallo zusammen, ich habe eine Frage bzgl. Share Berechtigungen auslesen und in CSV Datei speichern.
Folgendes Skript ist aktuell im Einsatz:
$folders = gci \\def-svr2\e$ | ?{$_.PSIsContainer} foreach ($folder in $folders) { $accessrules = @() $acl = Get-Acl $folder.FullName $acl.GetAccessRules($true,$IncludeInheritedRights,[System.Security.Principal.NTAccount]) | %{ $accessrules += New-Object PSObject -Property @{ "Folder" = $folder.FullName "Rights" = $_.FileSystemRights "Account" = $_.IdentityReference "Member" = (Get-ADGroupmember $_.IdentityReference.toString().split('\')[1] | select-expandproperty Name) -join ", " } return $accessrules | sort Folder,Account | select Folder, Rights, Account, Member | export-csv "C:\$folder.csv" -NoType -Delimiter ";" -Encoding UTF8 } %{$accessrules = $null} }
Auf Share1 hat zB. die Gruppe "Muster" mit dem Mitgliedern Max und Maria Mustermann write Berechtigungen. Ich frage den Share ab, erhalte die Gruppe und dadurch dann die Gruppenmitglieder (aktuell in einer Spalte, durch Komma getrennt.
Folder Rights Group Member Share1 write Muster MusterMax, MusterMar
Nun soll das Ganze allerdings erweitert bzw. modifiziert werden.
Es ist eine CSV Datei für jeden Share gedacht mit folgendem Aufbau:
Folder Rights Member DisplayName Department Share1 write MusterMax Mustermann, Max 111000 Share1 write MusterMar Mustermann, Maria 111001
Meine Frage:
Ist ein solcher Aufbau überhaupt möglich? Ich erhalte die Member ja nicht direkt und einzeln, sondern durch eine Get-ADGroupmember Abfrage der jeweiligen Gruppe, die Berechtigungen auf dem Share besitzt.
dh. ist es machbar, dass man die Auflistung der Gruppenmitglieder nicht in einer Spalte, sondern in mehreren Zeilen erreichen kann? Wenn ja, dann ist es auch bestimmt möglich für die einzelnen Mitglieder die DisplayNames sowie deren Department anzeigen zu lassen.
Ich hoffe ihr versteht meine Frage und könnt mir diesbezüglich helfen.
Einen schönen Start in die Woche und viele Dank schon mal für die Hilfe
Viele Grüße
Antworten
-
Hallo!
Ah sehr gut.
Schau dir mal das Konstrukt an:
$UserData = Get-ADUser $name -property DisplayName, Department | Select displayname,Department
$accessrules += New-Object PSObject -Property @{
"Folder" = $folder.FullName
"Rights" = $_.FileSystemRights
"Account" = $_.IdentityReference
"Member" = $name
"DisplayName" = ($UserData.DisplayName)
"Department" = ($UserData.Department)}
So oder so ähnlich sollte es klappen.
LG David
- Als Antwort markiert wachna87 Donnerstag, 13. August 2015 15:01
Alle Antworten
-
Hallo,
ich habs bestimmt nicht 100%ig geschnallt, aber versuche mal mein Glück:
$folders = gci \\def-svr2\e$ | ?{$_.PSIsContainer} foreach ($folder in $folders) { $accessrules = @() $acl = Get-Acl $folder.FullName $acl.GetAccessRules($true,$IncludeInheritedRights,[System.Security.Principal.NTAccount]) | %{ $Names=$_.IdentityReference.toString().split('\')[1] | select-expandproperty Name foreach($name in $Names){ $accessrules += New-Object PSObject -Property @{ "Folder" = $folder.FullName "Rights" = $_.FileSystemRights "Account" = $_.IdentityReference "Member" = Get-ADGroupmember($name) } } return $accessrules | sort Folder,Account | select Folder, Rights, Account, Member | export-csv "C:\$folder.csv" -NoType -Delimiter ";" -Encoding UTF8 } %{$accessrules = $null} }
LG Dave
-
Erstmal danke für die Hilfe.
Es geht in die richtige Richtung. Dein Skript habe ich müssen etwas abändern, aber jetzt zeigt er mir schon einmal die Mitglieder in einzelnen Zeilen an.
$folders = gci \\def-svr2\e$ | ?{$_.PSIsContainer} foreach ($folder in $folders) { $accessrules = @() $acl = Get-Acl $folder.FullName $acl.GetAccessRules($true,$IncludeInheritedRights,[System.Security.Principal.NTAccount]) | %{ $Names= Get-ADGroupmember $_.IdentityReference.toString().split('\') [1] | select-expand Name foreach($name in $Names){ $accessrules += New-Object PSObject -Property @{ "Folder" = $folder.FullName "Rights" = $_.FileSystemRights "Account" = $_.IdentityReference "Member" = $name } } return $accessrules | sort Folder,Account | select Folder, Rights, Account, Member | export-csv "C:\$folder.csv" -NoType -Delimiter ";" -Encoding UTF8 } %{$accessrules = $null} }
Jetzt fehlt nur noch die jeweilige Anzeige des Displaynames und des Departments in jeder Zeile.
Danke für die weitere Hilfe im Voraus :)
- Bearbeitet wachna87 Dienstag, 11. August 2015 11:38
-
Hallo!
Ah sehr gut.
Schau dir mal das Konstrukt an:
$UserData = Get-ADUser $name -property DisplayName, Department | Select displayname,Department
$accessrules += New-Object PSObject -Property @{
"Folder" = $folder.FullName
"Rights" = $_.FileSystemRights
"Account" = $_.IdentityReference
"Member" = $name
"DisplayName" = ($UserData.DisplayName)
"Department" = ($UserData.Department)}
So oder so ähnlich sollte es klappen.
LG David
- Als Antwort markiert wachna87 Donnerstag, 13. August 2015 15:01
-
Hi und danke für die Hilfe.
Musste noch ein bisschen dran schrauben und drehen, aber dann hats gepasst.
Danke für die schnellen und hilfreichen Antworten
Liebe Grüße
Michael
$folders = gci \\def-svr2\e$ | ?{$_.PSIsContainer} foreach ($folder in $folders) { $accessrules = @() $acl = Get-Acl $folder.FullName -ea SilentlyContinue $acl.GetAccessRules($true,$IncludeInheritedRights,[System.Security.Principal.NTAccount]) | %{ $names = Get-ADGroupmember $_.IdentityReference.toString().split('\')[1] -re | select -expand Samaccountname foreach($name in $names) { try{ $UserData = Get-ADUser $name -properties Displayname, Department | select Displayname, Department $accessrules += New-Object PSObject -Property @{ "Folder" = $folder.FullName "Rights" = $_.FileSystemRights "Account" = $_.IdentityReference "Member" = $name "Displayname" = ($UserData.DisplayName) "Department" = ($UserData.Department) } #Ende Object }Catch {"$name ist kein User"} } #Ende Schleife $names return $accessrules | sort Folder,Account | select Folder, Rights, Account, Member, Displayname, Department | export-csv "C:\$folder.csv" -NoType -Delimiter ";" -Encoding UTF8 } }
- Bearbeitet wachna87 Donnerstag, 13. August 2015 15:02