Abrufen von Datei- oder Ordnerberechtigungen mit PowerShell

Das Cmdlet „Get-Acl“ im PowerShell-Sicherheitsmodul (Microsoft.PowerShell.Security) eignet sich hervorragend zum Abrufen von Datei- oder Ordnerberechtigungen (auch als Zugriffssteuerungsliste oder ACL bezeichnet). Es ist jedoch etwas gewöhnungsbedürftig, nützliche Informationen aus der Standardausgabe zu erhalten.

Es wäre schön, wenn man einfach sehen könnte, was die Registerkarte „Sicherheit“ einer Datei, eines Ordners oder einer anderen Ressource anzeigt, ohne die Benutzeroberfläche des Datei-Explorers zu durchlaufen und mehrere Klicks ausführen zu müssen.


Abbildung 1: Registerkarte „Sicherheit“ eines Ordners im Windows Explorer

Einzeiler: Datei- oder Ordnerberechtigungen abrufen

Hier ist ein Einzeiler, der genau das tut:

(get-acl <Ordnername>).access | ft IdentityReference,FileSystemRights,AccessControlType,IsInherited,InheritanceFlags -auto

Die Ausgabe:

Die Get-Permissions Funktion

Wollen Sie die Ausgabe lesbarer machen? Hier ist eine PowerShell-Funktion, die benutzerdefinierte Beschriftungen (Titel in jeder Spalte der Tabelle) verwendet.

Sie können sie entweder als PowerShell-Skript speichern oder zu Ihrem PowerShell-Profil hinzufügen, damit sie immer verfügbar ist.

123456789
 function Get-Permissions ($ordner) { (get-acl $ordner).access | select `@{Label="Identity";Expression={$_.IdentityReference}}, `@{Label="Right";Expression={$_.FileSystemRights}}, `@{Label="Access";Expression={$_.AccessControlType}}, `@{Label="Inherited";Expression={$_.IsInherited}}, `@{Label="Inheritance Flags";Expression={$_.InheritanceFlags}}, `@{Label="Propagation Flags";Expression={$_.PropagationFlags}} | ft -auto}

Sie können die beiden vererbungsbezogenen Eigenschaften weglassen, wenn Sie diese Informationen nicht benötigen.

Jetzt können Sie Get-Permissions mit dem Ordnernamen verwenden:

Get-Permissions c:\myfolder

Die Ausgabe:

Sie können auch die Ausgabe der Befehle dir, ls oder gci über die Pipeline leiten, die alle PowerShell-Aliase für das Cmdlet Get-ChildItem sind.

dir <Pfad> | % {Get-Permissions -path $_.fullname}

Eine Funktion zum Öffnen der Datei- oder Ordnereigenschaften im Explorer

Wenn Sie die Berechtigungen in der GUI des Datei-Explorers wirklich sehen möchten, können Sie diese Funktion verwenden, um die Seite „Eigenschaften > Allgemein“ der Datei oder des Ordners zu öffnen. (Ich habe keine Möglichkeit gefunden, die Registerkarte „Sicherheit“ direkt zu öffnen. Wenn Sie wissen, wie das geht, teilen Sie es bitte in den Kommentaren mit.).

12345678910111213141516171819202122
function Get-Properties ($path) {#exit if path not foundif (-not ($path | Test-Path)) { Write-Host "$path not found. Bitte geben Sie einen gültigen Datei- oder Ordnerpfad an." -foregroundcolor rot return } $o = new-object -com Shell.Application$item = get-item $path if ($item.gettype() -eq ) {write-host "Ordner $path gefunden... Eigenschaften abrufen"$fso = $o.Namespace("$path")$fso.self.InvokeVerb("properties") } if ($item.gettype() -eq ){write-host "Datei $path gefunden... Getting properties"$fso = $o.Namespace($item.directoryname)$file = $fso.parsename($item.pschildname)$file.InvokeVerb("properties")}}

Jetzt einfach Get-Properties <Ordner des Dateinamens> verwenden, um die Eigenschaftsseite der Datei oder des Ordners schnell von der Shell aus zu öffnen.


Abbildung 2: Verwenden Sie die Funktion Get-Properties, um die Eigenschaften einer Datei oder eines Ordners schnell über die PowerShell zu öffnen

File System Security PowerShell Module

Microsoft PFE Raimund Andrée hat vor einiger Zeit das File System Security PowerShell Module veröffentlicht. Es fügt einige nützliche Cmdlets zur Verwaltung von Dateisystemberechtigungen mit der PowerShell hinzu. Sehen Sie sich auch seine entsprechenden Blogbeiträge Weekend Scripter: Use PowerShell to Get, Add, and Remove NTFS Permissions und NTFSSecurity Tutorial 2 – Managing NTFS Inheritance and Using Privileges.

Tags
PowerShell Scripts Security Windows

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.