Obțineți permisiuni pentru fișiere sau foldere folosind PowerShell

Cmodelul Get-Acl din modulul de securitate PowerShell (Microsoft.PowerShell.Security) face o treabă excelentă pentru a obține permisiuni pentru fișiere sau foldere (aka Access Control List sau ACL). Dar pentru a obține informații utile din ieșirea implicită poate fi nevoie să vă obișnuiți.

În schimb, ar fi grozav să putem vedea pur și simplu ce afișează fila Security a unui fișier, dosar sau altă resursă, dar fără a fi nevoie să trecem prin interfața de utilizare File Explorer și prin mai multe clicuri.


Figura 1: Fila Security a unui dosar în Windows Explorer

Un singur rând: Obțineți permisiunile unui fișier sau dosar

Iată un one-liner pentru a face exact acest lucru:

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

Ieșirea:

Funcția Get-Permissions

Vreți să faceți ieșirea mai ușor de citit? Iată o funcție PowerShell care utilizează etichete personalizate (titluri în fiecare coloană a tabelului).

Puteți fie să o salvați ca script PowerShell, fie să o adăugați la profilul PowerShell, astfel încât să fie mereu disponibilă.

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={$_.AccessControlType}}, `@{Label="Inherited";Expression={$_.IsInherited}}, `@{Label="Inheritance Flags";Expression={$_.InheritanceFlags}}, `@{Label="Propagation Flags";Expression={$_.PropagationFlags}} | ft -auto}

Puteți omite cele două proprietăți legate de moștenire dacă nu aveți nevoie de aceste informații.

Acum puteți utiliza Get-Permissions cu numele folderului:

Get-Permissions c:\\ myfolder

Lovitura:

De asemenea, puteți canaliza ieșirea din comenzile dir, ls sau gci, toate acestea fiind aliasuri PowerShell pentru cmdlet-ul Get-ChildItem.

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

O funcție pentru a deschide proprietățile fișierului sau ale dosarului în Explorer

Dacă vă place foarte mult să vedeți permisiunile în interfața grafică a Explorerului de fișiere, puteți utiliza această funcție pentru a deschide pagina Properties > General a fișierului sau a dosarului. (Nu am găsit o modalitate de a deschide direct fila Securitate. Dacă știți cum să faceți acest lucru, vă rugăm să împărtășiți în comentariile postării).

12345678910111213141516171819202122
function Get-Properties ($path) {#exit dacă nu se găsește caleaf (-not ($path | Test-Path)) { Write-Host "$path not found. Vă rugăm să specificați o cale validă pentru un fișier sau un folder." -foregroundcolor red return } $o = new-object -com Shell.Application$item = get-item $path if ($item.gettype() -eq ) {write-host "Am găsit folderul $path.... Getting properties"$fso = $o.Namespace("$path")$fso.self.InvokeVerb("properties") } if ($item.gettype() -eq ){write-host "Am găsit fișierul $path... Getting properties"$fso = $o.Namespace($item.directoryname)$file = $fso.parsename($item.pschildname)$file.InvokeVerb("properties")}}

Acum este suficient să folosiți Get-Properties <Folder of file name> pentru a deschide rapid pagina de proprietăți a fișierului sau folderului din shell.


Figura 2: Utilizați funcția Get-Properties pentru a deschide rapid proprietățile unui fișier sau dosar din PowerShell

File System Security PowerShell Module

Microsoft PFE Raimund Andrée a publicat cu ceva timp în urmă modulul File System Security PowerShell Module. Acesta adaugă câteva cmdlet-uri utile pentru a gestiona permisiunile sistemului de fișiere folosind PowerShell. Verificați, de asemenea, postările corespunzătoare de pe blogul său Weekend Scripter: Use PowerShell to Get, Add, and Remove NTFS Permissions și NTFSSecurity Tutorial 2 – Managing NTFS Inheritance and Using Privileges.

Tags
PowerShell Scripts Security Windows

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.