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