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
.