Fájl- vagy mappaengedélyek lekérése a PowerShell segítségével

A PowerShell biztonsági moduljának (Microsoft.PowerShell.Security) Get-Acl cmdletje kiválóan alkalmas a fájl- vagy mappaengedélyek (azaz az Access Control List vagy ACL) lekérésére. De a hasznos információk kinyerése az alapértelmezett kimenetből némi megszokást igényel.

Ehelyett jó lenne egyszerűen megnézni, hogy mit mutat egy fájl, mappa vagy más erőforrás biztonsági lapja, de anélkül, hogy a File Explorer felhasználói felületén és több kattintáson kellene végigmenni.


1. ábra: Egy mappa biztonsági lapja a Windows Explorerben

Egysoros: Fájl- vagy mappaengedélyek lekérdezése

Itt egy egysoros, amely pontosan ezt teszi:

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

A kimenet:

A Get-Permissions függvény

Kívánja olvashatóbbá tenni a kimenetet? Íme egy PowerShell-funkció, amely egyéni címkéket (címeket a táblázat egyes oszlopaiban) használ.

Elmentheti PowerShell szkriptként, vagy hozzáadhatja a PowerShell profiljához, hogy mindig elérhető legyen.

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}

Az örökléssel kapcsolatos két tulajdonságot elhagyhatja, ha nincs szüksége ezekre az információkra.

Most használhatja a Get-Permissions parancsot a mappa nevével:

Get-Permissions c:\myfolder

A kimenet:

A dir, ls vagy gci parancsok kimenetét is továbbíthatja, amelyek mind a Get-ChildItem cmdlet PowerShell aliasai.

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

A fájl vagy mappa tulajdonságainak megnyitása az Explorerben

Ha nagyon szeretné látni az engedélyeket a File Explorer felhasználói felületén, akkor ezzel a funkcióval megnyithatja a fájl vagy mappa Properties > General oldalát. (Nem találtam módot a Biztonság lap közvetlen megnyitására. Ha tudod, hogyan lehet ezt megtenni, kérlek, oszd meg a hozzászólásokban.).

12345678910111213141516171819202122
function Get-Properties ($path) {#exit if path not foundif (-not ($path | Test-Path)) { Write-Host "$path not found. Kérjük, adjon meg egy érvényes fájl vagy mappa elérési útvonalát." -foregroundcolor red return } $o = new-object -com Shell.Application$item = get-item $path if ($item.gettype() -eq ) {write-host "Found folder $path... Getting properties"$fso = $o.Namespace("$path")$fso.self.InvokeVerb("properties") } if ($item.gettype() -eq ){write-host "Found file $path... Getting properties"$fso = $o.Namespace($item.directoryname)$file = $fso.parsename($item.pschildname)$file.InvokeVerb("properties")}}}

Most már csak a Get-Properties <Folder of file name> segítségével gyorsan megnyithatjuk a fájl vagy mappa tulajdonságoldalát a shellből.


2. ábra: A Get-Properties funkció használata a fájl vagy mappa tulajdonságainak gyors megnyitásához a PowerShellből

File System Security PowerShell Module

Microsoft PFE Raimund Andrée nemrég publikálta a File System Security PowerShell modult. Ez néhány hasznos cmdletet ad hozzá a fájlrendszeri jogosultságok PowerShell segítségével történő kezeléséhez. Nézd meg a megfelelő blogbejegyzéseit is Weekend Scripter: PowerShell használata az NTFS-jogosultságok megszerzéséhez, hozzáadásához és eltávolításához és NTFSSecurity Tutorial 2 – Az NTFS öröklődés kezelése és a jogosultságok használata.

Tags
PowerShell Scripts Security Windows

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.