Get file or folder permissions using PowerShell

Het Get-Acl cmdlet in PowerShell’s Security module (Microsoft.PowerShell.Security) doet zijn werk prima met het ophalen van bestand of map permissies (aka de Access Control List of ACL). Maar om bruikbare informatie uit de standaard uitvoer te krijgen, kan enige gewenning nodig zijn.

In plaats daarvan zou het geweldig zijn om gewoon te kunnen zien wat het tabblad Beveiliging van een bestand, map of andere bron weergeeft, maar zonder dat u de gebruikersinterface van Verkenner hoeft te doorlopen en meerdere keren hoeft te klikken.


Figuur 1: Beveiligingstabblad van een map in Windows Verkenner

One-liner: Bestands- of mapmachtigingen ophalen

Hier is een one-liner om precies dat te doen:

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

De uitvoer:

De Get-Permissions-functie

Wil je de uitvoer leesbaarder maken? Hier is een PowerShell-functie die gebruikmaakt van aangepaste labels (titels in elke kolom van de tabel).

Je kunt het opslaan als een PowerShell-script of het toevoegen aan je PowerShell-profiel zodat het altijd beschikbaar is.

123456789
 functie Get-Permissions ($folder) { (get-acl $folder).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}

Je kunt de twee overervingsgerelateerde eigenschappen weglaten als je die informatie niet nodig hebt.

Nu kunt u Get-Permissions gebruiken met de mapnaam:

Get-Permissions c:\myfolder

De uitvoer:

U kunt ook de uitvoer van de dir-, ls- of gci-commando’s, die allemaal PowerShell-aliassen zijn voor het cmdlet Get-ChildItem, via een pijpleiding laten lopen.

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

Een functie om bestand of map Eigenschappen in Verkenner te openen

Als je echt graag de permissies in de File Verkenner GUI wilt zien, kun je deze functie gebruiken om de Eigenschappen > Algemene pagina van het bestand of de map te openen. (Ik heb nog geen manier gevonden om direct het tabblad Beveiliging te openen. Als u weet hoe dit moet, kunt u dit delen in de opmerkingen bij het bericht.).

12345678910111213141516171819202122
functie Get-Properties ($path) {#exit indien pad niet gevondenif (-not ($path | Test-Path)) { Write-Host "$path niet gevonden. Geef aub een geldig bestand of map pad op." -foregroundcolor red return } $o = new-object -com Shell.Application$item = get-item $path if ($item.gettype() -eq ) {write-host "Map $path gevonden... Eigenschappen ophalen"$fso = $o.Namespace("$path")$fso.self.InvokeVerb("properties") } if ($item.gettype() -eq ){write-host "Bestand gevonden $path... Getting properties"$fso = $o.Namespace($item.directoryname)$file = $fso.parsename($item.pschildname)$file.InvokeVerb("properties")}}

Gebruik nu gewoon Get-Properties <Folder van bestandsnaam> om snel de eigenschappenpagina van het bestand of de map te openen vanuit de commandoregel.


Figuur 2: Gebruik de functie Get-Properties om snel de eigenschappen van een bestand of map te openen vanuit PowerShell

File System Security PowerShell Module

Microsoft PFE Raimund Andrée heeft enige tijd geleden de File System Security PowerShell Module gepubliceerd. Het voegt een aantal handige cmdlets toe om bestandssysteem permissies te beheren met PowerShell. Bekijk ook zijn bijbehorende blog posts Weekend Scripter: Use PowerShell to Get, Add, and Remove NTFS Permissions en NTFSSecurity Tutorial 2 – Managing NTFS Inheritance and Using Privileges.

Tags
PowerShell Scripts Security Windows

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.