estefania
Goto Top

Vergebene Rechte dokumentieren - Gibt es hierfür ein anwenderfreundliches Tool?

Hallo erstmals.

Ich bin auf der Suche nach einer Möglichkeit um alle Rechte meines Servers protokollieren zu können, nach Möglichkeit möglichst übersichtlich Ordner für Ordner..
Es ist ein alter Server den ich eigentlich neu aufsetzen möchte aber zuvor alle vergebenen Rechte irgendwo protokollieren würde.
Einfach zur Sicherheit, falls es mal in Zukunft eine Frage dazu gibt wer wann welche Rechte hat, hatte usw.

Könnt ihr mir da weiterhelfen?

Dankeschön

Content-ID: 270612

Url: https://administrator.de/forum/vergebene-rechte-dokumentieren-gibt-es-hierfuer-ein-anwenderfreundliches-tool-270612.html

Ausgedruckt am: 22.12.2024 um 16:12 Uhr

HOzwei
Lösung HOzwei 29.04.2015, aktualisiert am 30.04.2015 um 07:16:17 Uhr
Goto Top
Hallo Estefania,

DumpSec ist ein einfaches Programm, was solche aufgaben ganz gut erledigt.

Grüße Manuel
Estefania
Estefania 29.04.2015 um 14:55:24 Uhr
Goto Top
Ah super, werde ich ausprobieren. Danke
114757
114757 29.04.2015 aktualisiert um 15:12:29 Uhr
Goto Top
Estefania
Estefania 01.05.2015 um 20:51:44 Uhr
Goto Top
Die ganzen Tools erfüllen zwar ihren Zweck, aber meiner Meinung nach sind die viel zu unübersichtlich.. hmmm
Es wird mir zu einem Ordner soviel angezeigt, daß es zu mühselig ist das alles durchzusuchen
Alle Änderungen die von dem angewählten Ordner vorhanden sind, sollten am besten angezeigt werden.. dort habe ich soetwas gefunden, aber
trotzdem spuckt das Tool viel zu viele Einträge raus.. oder stelle ich etwas falsch ein? Gibt es eventuell auch bessere Kaufversionen?
114757
114757 01.05.2015 aktualisiert um 21:14:20 Uhr
Goto Top
Vererbte Rechte ausblenden, feddich ...
Scripte sind allemal besser wenn es um persönliche Anpassungen und Vorlieben geht. Hier gibts z.B. ein Script das die Rechte mit Visio und Powershell visualisiert, vollkommen kostenlos:
http://powershell.com/cs/media/p/19302.aspx

Etwas Hirnschmalz sollte man natürlich schon besitzen ...wenn man diese Tools bedient.

Gruß jodel32
Estefania
Estefania 01.05.2015 um 21:22:32 Uhr
Goto Top
Mit welchem Tool kann man denn die vererbten Rechte ausblenden? Gibt es hierfür irgendwo eine Option?
114757
114757 01.05.2015 aktualisiert um 21:32:03 Uhr
Goto Top
Haben die fast alle, kann es aber gerade nicht sagen wo , mangels Zugriff.
Aber machs doch direkt mit Skript dann hast dus so wie du willst
http://powershell.com/cs/media/p/45053.aspx
Oder bist du so ein KlickiBunti-Admin face-wink
Estefania
Estefania 01.05.2015 um 21:34:01 Uhr
Goto Top
Als Frau tue ich mir da schon ein wenig schwerer wie ihr Männer, aber ich versuche mein bestes zu geben face-smile
Habe viele Ideen nur dann hapert es an der Umsetzung. Aber schön dass es solche Foren gibt, wo man es mit erfahrenen Usern zu tun hat und die gerne einem weiterhelfen. Danke @all
Estefania
Estefania 02.05.2015 um 07:49:07 Uhr
Goto Top
Zitat von @114757:

Haben die fast alle, kann es aber gerade nicht sagen wo , mangels Zugriff.
Aber machs doch direkt mit Skript dann hast dus so wie du willst
http://powershell.com/cs/media/p/45053.aspx
Oder bist du so ein KlickiBunti-Admin face-wink

Kann es sein, daß dieses Script nicht richtig funktioniert ?

Die Paramater

.PARAMETER $IncludeInheritedFolder
Whether or not to include Inherited Objects, Accpted values $True or $False
.PARAMETER $SysBuiltin
Whether to include System account "NT Authority and Builtin" accounts, Accpted values $True or $False

scheinen keine Wirkung zu zeigen.. Wenn ich den Wert "False" bei beiden eingebe, sieht die erstellte Datei trotzdem immer gleich aus.
Estefania
Estefania 03.05.2015 um 13:51:02 Uhr
Goto Top
Vielleicht sollte ich mal genauer sagen was ich möchte..

Ich möchte einen Ordner auswählen, von dem mir alle Rechte bis in den untersten Ordner angezeigt bzw. protokolliert werden.

- Es sollen nur Ordnerberechtigungen berücksichtigt werden, keine Einzeldateien
- Ordner, die die gleichen Rechte haben wie der angewählte Ordner, sollen automatisch ausgeblendet werden
- Berechtigungen wie lokale Accounts des Rechners und auch Domänen-Accounts, die nicht mehr erkannt werden (unknown) sollen gar nicht protokolliert werden

Eigentlich wäre es mir wichtig auf allen Unterodnern zu prüfen, ob sich etwas zu dem obersten, angewählten Ordner etwas geändert hat.

Mit welchem der Tools oder Script läßt sich sowas am Besten umsetzen?
colinardo
Lösung colinardo 03.05.2015, aktualisiert am 04.05.2015 um 07:26:32 Uhr
Goto Top
Hallo zusammen,
hier mal ein Script zum anpassen ... Zeile 2 und 4 anpassen. Im Code stehen kommentiert auch noch weitere Ausgabemöglichkeiten ab Zeile 32, wie CSV / Gridview / etc.
Für das Beispiel ist eine formatierte HTML-Ausgabe voreingestellt gruppiert nach Ordnern. Es werden nur nicht vererbte Rechte aufgelistet, also die, die man manuell hinzugefügt hat oder in einem Ordner die Vererbung unterbrochen hat.

Getestet mit PS 3.0 / Sicherzustellen ist das die Ordnertiefe 266 Zeichen nicht überschreitet und der Account der das Script ausführt auf alle Unter-Ordner des angegebenen Ordners zugreifen kann
# Ordner der rekursiv gescannt werden soll
$ORDNER = "C:\Ordner\Daten"  
# Ausgabe-Datei (HTML)
$OUTPUT = $env:USERPROFILE + "\Desktop\Berechtigungen.html"  

function List-FolderRights{
    param(
        [parameter(mandatory=$true)][string]$RootFolder,
        [bool]$IncludeInheritedRights = $true
    )
    $accessrules = @()
    $folders = gci $RootFolder -Recurse | ?{$_.PSIsContainer}
    foreach($folder in $folders){
        try{
            $acl = Get-Acl $folder.FullName
            $acl.GetAccessRules($true,$IncludeInheritedRights,[System.Security.Principal.NTAccount]) | %{
                $accessrules += New-Object PSObject -Property @{
                    "Folder" = $folder.FullName  
                    "Account" = $_.IdentityReference  
                    "Rights" = $_.FileSystemRights  
                    "AccessControlType" = $_.AccessControlType  
                    "InheritanceFlags" = $_.InheritanceFlags  
                }
            }
        }catch{write-host $_.Exception.Message -ForegroundColor Red}
    }
    return $accessrules
}

$result = List-FolderRights $ORDNER -IncludeInheritedRights $false | sort Folder,Account | select Folder,Account,Rights,AccessControlType,InheritanceFlags

# OUTPUT POSSIBILITIES --------------------------------------

# Output to Console
# $result | ft -AutoSize -Wrap -GroupBy Folder

# Output to GridView
# $result | out-gridview

# Output to CSV
# $result | export-csv "C:\temp\folderrights.csv" -NoType -Delimiter ";" -Encoding UTF8  

# Output to very simple html table
# $result | Convertto-HTML -Title "Berechtigungen" | out-file "C:\temp\folderrights.html" -Encoding UTF8  

#-------------------------------------------------------------

# Formatierter HTML Output

$html = @"  
<!doctype html>
<html>
<head>
<meta charset="utf-8">  
<title>Berechtigungen</title>
<style type="text/css">  
body {
	font-family: Verdana, Geneva, sans-serif;
	font-size: 13px;
}
H1{font-size:1.8em}
table td {
	vertical-align:middle;	
}
th {
	text-align: left;
	background-color: #666;
	color: white;
	height: 20px;
	padding: 5px;
}
tr.bodyrow td{
	height: 20px;
	border-bottom-width: 1px;
	border-bottom-style: dashed;
	border-bottom-color: #CCC;
}
tr.grouprow td {
	height: 20px;
	border-bottom-width: 1px;
	border-bottom-style: dashed;
	border-bottom-color: #CCC;
	background-color: #96B0F5;
	padding: 2px;
	font-weight: bold;
	color: #333;
}
</style>
</head>

<body>
<h1>Übersicht der Berechtigungen</h1>
<table width="100%" border="0" cellspacing="0" cellpadding="0">  
  <tr>
    <th>Folder</th>
    <th>Account</th>
    <th>Rights</th>
    <th>Type</th>
    <th>InheritanceFlags</th>
  </tr>
  $($result | group Folder | %{
@"  
<tr class="grouprow">  
    <td colspan="5">Ordner: $($_.Name)</td>  
</tr>
"@  
$($_.Group | %{
@"  
<tr class="bodyrow">  
    <td>$($_.Folder)</td>
    <td>$($_.Account)</td>
    <td>$($_.Rights)</td>
    <td>$($_.AccessControlType)</td>
    <td>$($_.InheritanceFlags)</td>
</tr>
"@  
})
})
</table>
</body>
</html>
"@ | out-file $OUTPUT -Encoding UTF8  
Start-Process $OUTPUT

Viel Spaß
Grüße Uwe

Falls der Beitrag gefällt, seid so nett und unterstützt mich durch eine kleine Spende / If you like my contribution please support me and donate
Estefania
Estefania 03.05.2015 um 23:06:59 Uhr
Goto Top
Danke @uwe

Genau das was ich gesucht habe. Dies sollte einiges an Arbeit erleichtern.
VGem-e
VGem-e 23.07.2015 um 10:41:19 Uhr
Goto Top
Servus,

@ colinardo:

Bei uns sind leider manche Kollegen, die so viele Unterverzeichnisse anlegen, dass die 256 Zeichen ab und an überschritten werden.

Hast Du hierfür auch schon mal was austesten können?

Danke für evtl. Input.

Gruß
VGem-e
114757
114757 23.07.2015 aktualisiert um 11:00:36 Uhr
Goto Top
Moin
Zitat von @VGem-e:
Bei uns sind leider manche Kollegen, die so viele Unterverzeichnisse anlegen, dass die 256 Zeichen ab und an überschritten
werden.
Die User zwingen ihre Struktur dahingehend zu ändern das die Pfade nicht mehr so lang sind, bringt nur Vorteile unter Windows, in jeder Hinsicht:
Siehe: Kritische Pfadlänge für Benutzer kenntlich machen (Script)

Powershell hat mit dem .NET Framework ein Problem das es mit solch langen Pfaden einfach nicht umgehen kann, leider ein echtes Manko das MS schon ewig nicht in Angriff genommen hat...

Gruß jodel32
colinardo
colinardo 23.07.2015 aktualisiert um 13:11:21 Uhr
Goto Top
Hallo @VGem-e,
habe ich aus Zeitgründen nicht mehr verfolgt, hier wird strikt mit kurzen Pfaden gearbeitet. Powershell hat da leider echt einen miesen Bug der schon seit Lebzeiten existiert und MS keine Anstallten macht da etwas zu fixen (leider). Da entwickelt man schon so eine moderne Sprache wie Powershell und lässt so was Essentielles unter den Tisch fallen face-sad

Grüße Uwe
lordofremixes
lordofremixes 04.09.2015 aktualisiert um 10:39:48 Uhr
Goto Top
Hallo Uwe!

2 Anfänger-Fragen:

Wie kann ich das Script auf Windows Server 2008 R2 ausführen?
Geht das mit powershell.exe -ExecutionPolicy RemoteSigned -File "C:\test\Berechtigungen.ps1" in einer CMD ?

Zu Zeile 4:
$OUTPUT = $env:USERPROFILE
für was steht das $env:USERPROFILE ? Brauche ich das auch wenn ich die Ausgabe nur in
"C:\test\Berechtigungen.html" haben will `?

Hoffe du kannst das noch beantworten..

Gruß
colinardo
colinardo 04.09.2015 aktualisiert um 11:05:04 Uhr
Goto Top
Hi lordo.
Zitat von @lordofremixes:
Wie kann ich das Script auf Windows Server 2008 R2 ausführen?
Geht das mit powershell.exe -ExecutionPolicy RemoteSigned -File "C:\test\Berechtigungen.ps1" in einer CMD ?
Ja kannst du machen. Aber besser mit ByPass wenn die Policy für den User noch nicht freigeschaltet wurde. Aber natürlich mit einem Account ausführen der genug Rechte auf der Maschine besitzt.
Zu Zeile 4:
$OUTPUT = $env:USERPROFILE
für was steht das $env:USERPROFILE ? Brauche ich das auch wenn ich die Ausgabe nur in
"C:\test\Berechtigungen.html" haben will `?
Das ist die ganz normale Umgebungsvariable %Userprofile% welche den Pfad zum aktuellen Userprofil enthält, also z.B. c:\Users\Maxmuster

Brauchst du das nicht schreibst du
$OUTPUT = 'c:\test\berechtigungen.html'  
Grüße Uwe
lordofremixes
lordofremixes 04.09.2015 um 13:40:04 Uhr
Goto Top
Hi Uwe,

danke für die Erklärungen. Kann es sein, dass die Formatierung (wenn ich auf Quelltext klicke) deinen Quellcode verfälscht wegen dem <br> ?
Jedenfalls wird der Code bei mir mit <br /> in den Zwischenspeicher kopiert:

# Ordner der rekursiv gescannt werden soll<br />
$ORDNER = "C:\Ordner\Daten"<br />  
# Ausgabe-Datei (HTML)<br />
$OUTPUT = $env:USERPROFILE + "\Desktop\Berechtigungen.html"<br />  
<br />
<br />
function List-FolderRights{<br />
    param(<br />
        [parameter(mandatory=$true)][string]$RootFolder,<br />
        [bool]$IncludeInheritedRights = $true<br />
    )<br />
  USW.......

Habe dann das <br /> ersetzt und die PS lies sich dann auch ausführen (als Domänenadmin). Er rattert dann auch einige Sekunden durch, leider öffnet sich die HTML dann zwar mit den Überschriften, aber ohne Inhalte.

Mein Quelltext sieht so aus:

# Ordner der rekursiv gescannt werden soll
$ORDNER = "F:\VOL8\Vertrieb"  
# Ausgabe-Datei (HTML)
$OUTPUT = 'c:\test\berechtigungen.html'  


function List-FolderRights{
    param(
        [parameter(mandatory=$true)][string]$RootFolder,
        [bool]$IncludeInheritedRights = $true
    )
    $accessrules = @()
    $folders = gci $RootFolder -Recurse | ?{$_.PSIsContainer}
    foreach($folder in $folders){
        try{
            $acl = Get-Acl $folder.FullName
            $acl.GetAccessRules($true,$IncludeInheritedRights,[System.Security.Principal.NTAccount]) | %{
                $accessrules += New-Object PSObject -Property @{
                    "Folder" = $folder.FullName  
                    "Account" = $_.IdentityReference  
                    "Rights" = $_.FileSystemRights  
                    "AccessControlType" = $_.AccessControlType  
                    "InheritanceFlags" = $_.InheritanceFlags  
                }
            }
        }catch{write-host $_.Exception.Message -ForegroundColor Red}
    }
    return $accessrules
}


$result = List-FolderRights $ORDNER -IncludeInheritedRights $false | sort Folder,Account | select Folder,Account,Rights,AccessControlType,InheritanceFlags


# OUTPUT POSSIBILITIES --------------------------------------


# Output to Console
# $result | ft -AutoSize -Wrap -GroupBy Folder


# Output to GridView
# $result | out-gridview


# Output to CSV
# $result | export-csv "C:\temp\folderrights.csv" -NoType -Delimiter ";" -Encoding UTF8  


# Output to very simple html table
# $result | Convertto-HTML -Title "Berechtigungen" | out-file "C:\temp\folderrights.html" -Encoding UTF8  


#-------------------------------------------------------------


# Formatierter HTML Output


$html = @"  
<!doctype html>
<html>
<head>
<meta charset="utf-8">  
<title>Berechtigungen</title>
<style type="text/css">  
body {
	font-family: Verdana, Geneva, sans-serif;
	font-size: 13px;
}
H1{font-size:1.8em}
table td {
	vertical-align:middle;	
}
th {
	text-align: left;
	background-color: #666;
	color: white;
	height: 20px;
	padding: 5px;
}
tr.bodyrow td{
	height: 20px;
	border-bottom-width: 1px;
	border-bottom-style: dashed;
	border-bottom-color: #CCC;
}
tr.grouprow td {
	height: 20px;
	border-bottom-width: 1px;
	border-bottom-style: dashed;
	border-bottom-color: #CCC;
	background-color: #96B0F5;
	padding: 2px;
	font-weight: bold;
	color: #333;
}
</style>
</head>


<body>
<h1>Übersicht der Berechtigungen</h1>
<table width="100%" border="0" cellspacing="0" cellpadding="0">  
  <tr>
    <th>Folder</th>
    <th>Account</th>
    <th>Rights</th>
    <th>Type</th>
    <th>InheritanceFlags</th>
  </tr>
  $($result | group Folder | %{
@"  
<tr class="grouprow">  
    <td colspan="5">Ordner: $($_.Name)</td>  
</tr>
"@  
$($_.Group | %{
@"  
<tr class="bodyrow">  
    <td>$($_.Folder)</td>
    <td>$($_.Account)</td>
    <td>$($_.Rights)</td>
    <td>$($_.AccessControlType)</td>
    <td>$($_.InheritanceFlags)</td>
</tr>
"@  
})
})
</table>
</body>
</html>
"@ | out-file $OUTPUT -Encoding UTF8  
Start-Process $OUTPUT

Irgendeine Idee was da passiert sein könnte?

Gruß
colinardo
colinardo 04.09.2015 aktualisiert um 13:53:41 Uhr
Goto Top
Zitat von @lordofremixes:
. Kann es sein, dass die Formatierung (wenn ich auf Quelltext klicke) deinen Quellcode verfälscht wegen dem <br> ?
Jedenfalls wird der Code bei mir mit <br /> in den Zwischenspeicher kopiert:
Dachte ich mir doch das das jetzt kommt, ist ein Fehler der letzten Updates des Forums !
Siehe meinen Beitrag hier
Entwicklertagebuch: Zitate, Text- und Codeblöcke

Hoffentlich wird das schnell behoben sonst werden wir hier mit Fragen überhäuft ....
lordofremixes
lordofremixes 04.09.2015 um 13:48:30 Uhr
Goto Top
Alles klar!!
Ich werde dann mal abwarten, bis es behoben ist und dann erneut testen!!
Wenn das Script dann funktioniert, werden einige sich richtig freuen!!!
colinardo
colinardo 04.09.2015 aktualisiert um 13:53:31 Uhr
Goto Top
Zitat von @lordofremixes:
Wenn das Script dann funktioniert, werden einige sich richtig freuen!!!
Zur Info, im jetzigen Zustand werden nur explizit vergebene Rechte dokumentiert und keine Vererbten!, habe ich ja oben geschrieben. Wenn du alle inkl vererbter Rechte anzeigen lassen willst du musst du das in Zeile 30 auch angeben (also auf $true festlegen):
-IncludeInheritedRights $true
Bitte hier keine weiteren Posts mehr im Interesse des TO. Danke!
lordofremixes
lordofremixes 04.09.2015 um 15:24:19 Uhr
Goto Top
Hallo Uwe,

top Script!! Genau das was ich schon ewig suche!!

Mal wieder Super Arbeit!!
THANKS
mrmomba
mrmomba 16.11.2016 um 10:50:00 Uhr
Goto Top
Hallo,

vielen Dank für dieses wirklich sehr geniale Script.
Ich habe es ein kleinwenig abgeändert, z.B. in Zeile 2 wie folgt:
$ORDNER = Read-Host "Ordner eingeben"

Das für mich größte Problem ist, die Benutzergruppen in den Mitgliedern aufzulösen.
Mir fehlt leider das Powershellverständis.
Ich habe es versucht mit dem Script von FrankysWeb zu 'mergen'
https://www.frankysweb.de/active-directory-benutzer-in-verschachtelten-g ...
Leider ist mir das nicht geglückt. Als ausgangsbasis habe ich die Variable $acl versucht zu nutzen.
Ist das mit deinem Script einfach umzusetzen?
131381
131381 16.11.2016 um 10:54:55 Uhr
Goto Top
Zitat von @mrmomba:
Das für mich größte Problem ist, die Benutzergruppen in den Mitgliedern aufzulösen.
Get-AdGroupMember ist dein Freund!
Gruß
mrmomba
mrmomba 16.11.2016 um 12:14:20 Uhr
Goto Top
Da fehlt mir leider der Anhaltspunkt, wie und wo ich das einsetzen muss. Alle meine Versuche sind gescheitert
JPAsked
JPAsked 26.02.2020 um 14:38:43 Uhr
Goto Top
Moin Uwe,

vorerst möchte ich mich für das echt gute Skript bedanken! Ich habe es noch ein wenig umgebaut, weil mir die Anordnung bei der Ausgabe in CSV nicht so gefällt. Da wird es nicht in Tabellenform sondern untereinander ausgegeben.

Lokal funktioniert dieses umgebaute Skript einwandfrei, aber sobald ich das auf dem Fileserver ausführe bekomme ich immer folgende Meldung:
"Es ist nicht möglich, eine Methode für einen Ausdruck aufzurufen, der den NULL hat."

Kannst du mir erklären, warum das so ist? Wie erwähnt, lokal läuft das Ganze, aber als Admin auf dem Fileserver nicht.

Vielen Dank für eure Unterstützung!

Grüße
Jan
j1m3e84
j1m3e84 12.03.2020 um 08:13:06 Uhr
Goto Top
Hallo!

Vielen dank für das coole Script!

Gibt es hierzu noch die Möglichkeit, nach einer Gewissen Gruppe zu Filtern?
Wenn das noch möglich wäre, würde ich im dreieck springen und im viereck Tanzen!
colinardo
colinardo 12.03.2020 aktualisiert um 11:51:02 Uhr
Goto Top
Zitat von @j1m3e84:
Gibt es hierzu noch die Möglichkeit, nach einer Gewissen Gruppe zu Filtern?
Wenn das noch möglich wäre, würde ich im dreieck springen und im viereck Tanzen!
Servus,
freut mich wenn es dir hilft.
Das gewünschte ist kein Problem, das machst du hier bspw. mit einem Where-Object um das Ergebnis zu filtern
$result = List-FolderRights $ORDNER -IncludeInheritedRights $false | ?{$_.Account.Value -eq "DOMAIN\DEINEGRUPPE"} | select Folder,Account,Rights,AccessControlType,InheritanceFlags  

oder auch über die SID
$group = 'Verwaltung'  
$SID_GROUP = (New-Object System.Security.Principal.SecurityIdentifier ([adsisearcher]"(SamAccountName=$group)").FindOne().GetDirectoryEntry().objectsid.value ,0).Value  
$result = List-FolderRights $ORDNER -IncludeInheritedRights $true | ?{try{$_.Account.Translate([System.Security.Principal.SecurityIdentifier]).Value -eq $SID_GROUP}catch{}} | select Folder,Account,Rights,AccessControlType,InheritanceFlags
Oder du nutzt meine weiteren Funktionen zum Thema, die haben das auch schon eingebaut
Kostenloses Tool zum Auslesen Berechtigung

G. Uwe
j1m3e84
j1m3e84 12.03.2020 um 11:09:25 Uhr
Goto Top
Hallo,

leider macht er das nicht,

# Ordner der rekursiv gescannt werden soll
$ORDNER = "D:\mein_Netzlaufwerk"  
# Ausgabe-Datei (HTML)
$OUTPUT ="C:\mein_Speicherort"  

function List-FolderRights{
    param(
        [parameter(mandatory=$true)][string]$RootFolder,
        [bool]$IncludeInheritedRights = $true
    )
    $accessrules = @()
    $folders = gci $RootFolder -Recurse | ?{$_.PSIsContainer}
    foreach($folder in $folders){
        try{
            $acl = Get-Acl $folder.FullName
            $acl.GetAccessRules($true,$IncludeInheritedRights,[System.Security.Principal.NTAccount]) | %{
                $accessrules += New-Object PSObject -Property @{
                    "Folder" = $folder.FullName  
                    "Account" = $_.IdentityReference  
                    "Rights" = $_.FileSystemRights  
                    "AccessControlType" = $_.AccessControlType  
                    "InheritanceFlags" = $_.InheritanceFlags  
                }
            }
        }catch{write-host $_.Exception.Message -ForegroundColor Red}
    }
    return $accessrules
}

$result = List-FolderRights $ORDNER -IncludeInheritedRights $true | ?{$_.Account.ToString() -eq "meine_Domäne\Verwaltung"} | select Folder,Account,Rights,AccessControlType,InheritanceFlags  

# OUTPUT POSSIBILITIES --------------------------------------

# Output to Console
# $result | ft -AutoSize -Wrap -GroupBy Folder

# Output to GridView
# $result | out-gridview

# Output to CSV
$result | export-csv "Speicherort\folderrights.csv" -NoType -Delimiter ";" -Encoding UTF8  

# Output to very simple html table
#$result | Convertto-HTML -Title "Berechtigungen" | out-file "Speicherort\folderrights.html" -Encoding UTF8  

#-------------------------------------------------------------

# Formatierter HTML Output

$html = @"  
<!doctype html>
<html>
<head>
<meta charset="utf-8">  
<title>Berechtigungen</title>
<style type="text/css">  
body {
	font-family: Verdana, Geneva, sans-serif;
	font-size: 13px;
}
H1{font-size:1.8em}
table td {
	vertical-align:middle;	
}
th {
	text-align: left;
	background-color: #666;
	color: white;
	height: 20px;
	padding: 5px;
}
tr.bodyrow td{
	height: 20px;
	border-bottom-width: 1px;
	border-bottom-style: dashed;
	border-bottom-color: #CCC;
}
tr.grouprow td {
	height: 20px;
	border-bottom-width: 1px;
	border-bottom-style: dashed;
	border-bottom-color: #CCC;
	background-color: #96B0F5;
	padding: 2px;
	font-weight: bold;
	color: #333;
}
</style>
</head>

<body>
<h1>Übersicht der Berechtigungen</h1>
<table width="100%" border="0" cellspacing="0" cellpadding="0">  
  <tr>
    <th>Folder</th>
    <th>Account</th>
    <th>Rights</th>
    <th>Type</th>
    <th>InheritanceFlags</th>
  </tr>
  $($result | group Folder | %{
@"  
<tr class="grouprow">  
    <td colspan="5">Ordner: $($_.Name)</td>  
</tr>
"@  
$($_.Group | %{
@"  
<tr class="bodyrow">  
    <td>$($_.Folder)</td>
    <td>$($_.Account)</td>
    <td>$($_.Rights)</td>
    <td>$($_.AccessControlType)</td>
    <td>$($_.InheritanceFlags)</td>
</tr>
"@  
})
})
</table>
</body>
</html>
"@ | out-file $OUTPUT -Encoding UTF8  
Start-Process $OUTPUT

er erstellt zwar eine Datei, allerdings ohne Inhalt
colinardo
colinardo 12.03.2020 aktualisiert um 11:23:19 Uhr
Goto Top
Schau dir dir Strings für die Gruppe auf der Konsole richtig an und übernehme sie korrekt dann klappt das auch.

Weiteren Support gibt es nur noch per PN
j1m3e84
j1m3e84 12.03.2020 um 12:01:00 Uhr
Goto Top
Danke!

hab meinen Fehler gefunden!

Vielen Vielen DANK!
JakiHergerson
JakiHergerson 01.06.2021 um 11:30:50 Uhr
Goto Top
Hallo erstmal und vielen Dank für das Script.

Ich habe nur eine Frag, was müsste ich an dem Script anpassen damit mir die Member der einzelnen Berechtigungsgruppen damit auch angezeigt werden?

Vielen Dank schonmal

LG

Jaki aka Sven