Ottieni i permessi di file o cartelle usando PowerShell

Il cmdlet Get-Acl nel modulo Security di PowerShell (Microsoft.PowerShell.Security) fa un ottimo lavoro per ottenere i permessi di file o cartelle (aka la Access Control List o ACL). Ma ottenere informazioni utili dall’output predefinito può richiedere un po’ di tempo per abituarsi.

Invece, sarebbe bello poter semplicemente vedere cosa mostra la scheda Sicurezza di un file, di una cartella o di un’altra risorsa, ma senza dover passare attraverso l’interfaccia utente di Esplora file e i clic multipli.


Figura 1: Scheda Sicurezza di una cartella in Esplora risorse

Una riga: Ottenere i permessi di file o cartelle

Ecco un one-liner per fare esattamente questo:

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

L’output:

La funzione Get-Permissions

Vuoi rendere l’output più leggibile? Ecco una funzione PowerShell che usa etichette personalizzate (titoli in ogni colonna della tabella).

Puoi salvarla come script PowerShell o aggiungerla al tuo profilo PowerShell in modo che sia sempre disponibile.

123456789
 function 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}

Puoi omettere le due proprietà relative all’ereditarietà se non hai bisogno di queste informazioni.

Ora puoi usare Get-Permissions con il nome della cartella:

Get-Permissions c:\myfolder

L’output:

Puoi anche convogliare l’output dei comandi dir, ls o gci, che sono tutti alias PowerShell per la cmdlet Get-ChildItem.

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

Una funzione per aprire le proprietà del file o della cartella in Explorer

Se ti piace davvero vedere i permessi nella GUI di File Explorer, puoi usare questa funzione per aprire la pagina delle proprietà > generali del file o della cartella. (Non ho trovato un modo per aprire direttamente la scheda Sicurezza. Se sai come farlo, per favore condividilo nei commenti del post).

12345678910111213141516171819202122
function Get-Properties ($path) {#exit if path not founddif (-not ($path | Test-Path)) { Write-Host "$path not found. Si prega di specificare un percorso di file o cartella valido". -foregroundcolor red return } $o = new-object -com Shell.Application$item = get-item $path if ($item.gettype() -eq ) {write-host "Trovata cartella $path... Ottenere proprietà"$fso = $o.Namespace("$path")$fso.self.InvokeVerb("properties") } if ($item.gettype() -eq ){write-host "Trovato file $path... Ottenere le proprietà"$fso = $o.Namespace($item.directoryname)$file = $fso.parsename($item.pschildname)$file.InvokeVerb("properties")}}

Ora basta usare Get-Properties <Folder of file name> per aprire rapidamente la pagina delle proprietà del file o della cartella dalla shell.


Figura 2: Usa la funzione Get-Properties per aprire rapidamente le proprietà di un file o di una cartella da PowerShell

File System Security PowerShell Module

Microsoft PFE Raimund Andrée ha pubblicato il File System Security PowerShell Module tempo fa. Aggiunge alcune utili cmdlets per gestire i permessi del file system usando PowerShell. Controlla anche i suoi post corrispondenti sul blog Weekend Scripter: Use PowerShell to Get, Add, and Remove NTFS Permissions e NTFSSecurity Tutorial 2 – Managing NTFS Inheritance and Using Privileges.

Tags
PowerShell Scripts Security Windows

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.