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-Key: 270612

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

Printed on: June 19, 2024 at 01:06 o'clock

Member: HOzwei
Solution HOzwei Apr 29, 2015, updated at Apr 30, 2015 at 05:16:17 (UTC)
Goto Top
Hallo Estefania,

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

Grüße Manuel
Member: Estefania
Estefania Apr 29, 2015 at 12:55:24 (UTC)
Goto Top
Ah super, werde ich ausprobieren. Danke
Mitglied: 114757
114757 Apr 29, 2015 updated at 13:12:29 (UTC)
Goto Top
Member: Estefania
Estefania May 01, 2015 at 18:51:44 (UTC)
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?
Mitglied: 114757
114757 May 01, 2015 updated at 19:14:20 (UTC)
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
Member: Estefania
Estefania May 01, 2015 at 19:22:32 (UTC)
Goto Top
Mit welchem Tool kann man denn die vererbten Rechte ausblenden? Gibt es hierfür irgendwo eine Option?
Mitglied: 114757
114757 May 01, 2015 updated at 19:32:03 (UTC)
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
Member: Estefania
Estefania May 01, 2015 at 19:34:01 (UTC)
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
Member: Estefania
Estefania May 02, 2015 at 05:49:07 (UTC)
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.
Member: Estefania
Estefania May 03, 2015 at 11:51:02 (UTC)
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?
Member: colinardo
Solution colinardo May 03, 2015, updated at May 04, 2015 at 05:26:32 (UTC)
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
Member: Estefania
Estefania May 03, 2015 at 21:06:59 (UTC)
Goto Top
Danke @uwe

Genau das was ich gesucht habe. Dies sollte einiges an Arbeit erleichtern.
Member: VGem-e
VGem-e Jul 23, 2015 at 08:41:19 (UTC)
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
Mitglied: 114757
114757 Jul 23, 2015 updated at 09:00:36 (UTC)
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
Member: colinardo
colinardo Jul 23, 2015 updated at 11:11:21 (UTC)
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
Member: lordofremixes
lordofremixes Sep 04, 2015 updated at 08:39:48 (UTC)
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ß
Member: colinardo
colinardo Sep 04, 2015 updated at 09:05:04 (UTC)
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
Member: lordofremixes
lordofremixes Sep 04, 2015 at 11:40:04 (UTC)
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ß
Member: colinardo
colinardo Sep 04, 2015 updated at 11:53:41 (UTC)
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 ....
Member: lordofremixes
lordofremixes Sep 04, 2015 at 11:48:30 (UTC)
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!!!
Member: colinardo
colinardo Sep 04, 2015 updated at 11:53:31 (UTC)
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!
Member: lordofremixes
lordofremixes Sep 04, 2015 at 13:24:19 (UTC)
Goto Top
Hallo Uwe,

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

Mal wieder Super Arbeit!!
THANKS
Member: mrmomba
mrmomba Nov 16, 2016 at 09:50:00 (UTC)
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?
Mitglied: 131381
131381 Nov 16, 2016 at 09:54:55 (UTC)
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ß
Member: mrmomba
mrmomba Nov 16, 2016 at 11:14:20 (UTC)
Goto Top
Da fehlt mir leider der Anhaltspunkt, wie und wo ich das einsetzen muss. Alle meine Versuche sind gescheitert
Member: JPAsked
JPAsked Feb 26, 2020 at 13:38:43 (UTC)
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
Member: j1m3e84
j1m3e84 Mar 12, 2020 at 07:13:06 (UTC)
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!
Member: colinardo
colinardo Mar 12, 2020 updated at 10:51:02 (UTC)
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
Member: j1m3e84
j1m3e84 Mar 12, 2020 at 10:09:25 (UTC)
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
Member: colinardo
colinardo Mar 12, 2020 updated at 10:23:19 (UTC)
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
Member: j1m3e84
j1m3e84 Mar 12, 2020 at 11:01:00 (UTC)
Goto Top
Danke!

hab meinen Fehler gefunden!

Vielen Vielen DANK!
Member: JakiHergerson
JakiHergerson Jun 01, 2021 at 09:30:50 (UTC)
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