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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
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
32 Kommentare
Neuester Kommentar
Moin,
Hier gibt's noch mehr dazu
Suche Tool zur Darstellung der NTFS-Rechte der einzelnen User in einem Unternehmen
Gruß jodel32
Hier gibt's noch mehr dazu
Suche Tool zur Darstellung der NTFS-Rechte der einzelnen User in einem Unternehmen
Gruß jodel32
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
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
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
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
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
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
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
Moin
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
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:Bei uns sind leider manche Kollegen, die so viele Unterverzeichnisse anlegen, dass die 256 Zeichen ab und an überschritten
werden.
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
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
Grüße Uwe
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
Grüße Uwe
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ß
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ß
Hi lordo.
Brauchst du das nicht schreibst du
Grüße Uwe
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.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 `?
Das ist die ganz normale Umgebungsvariable %Userprofile% welche den Pfad zum aktuellen Userprofil enthält, also z.B. c:\Users\Maxmuster$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 `?
Brauchst du das nicht schreibst du
$OUTPUT = 'c:\test\berechtigungen.html'
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:
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:
Irgendeine Idee was da passiert sein könnte?
Gruß
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ß
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 !. 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:
Siehe meinen Beitrag hier
Entwicklertagebuch: Zitate, Text- und Codeblöcke
Hoffentlich wird das schnell behoben sonst werden wir hier mit Fragen überhäuft ....
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):
Bitte hier keine weiteren Posts mehr im Interesse des TO. Danke!
-IncludeInheritedRights $true
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?
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?
Zitat von @mrmomba:
Das für mich größte Problem ist, die Benutzergruppen in den Mitgliedern aufzulösen.
Get-AdGroupMember ist dein Freund!Das für mich größte Problem ist, die Benutzergruppen in den Mitgliedern aufzulösen.
Gruß
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
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
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,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!
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
Kostenloses Tool zum Auslesen Berechtigung
G. Uwe
Hallo,
leider macht er das nicht,
er erstellt zwar eine Datei, allerdings ohne Inhalt
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
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
Weiteren Support gibt es nur noch per PN