Hämta fil- eller mappbehörigheter med PowerShell

Cmdletten Get-Acl i PowerShells säkerhetsmodul (Microsoft.PowerShell.Security) gör ett bra jobb när det gäller att få fram fil- eller mappbehörigheter (även kallad åtkomstkontrollista eller ACL). Men att få användbar information från standardutmatningen kan ta lite tid att vänja sig vid.

Istället skulle det vara bra att helt enkelt kunna se vad säkerhetsfliken för en fil, mapp eller annan resurs visar, men utan att behöva gå igenom File Explorer UI och flera klick.


Figur 1: Säkerhetsfliken för en mapp i Utforskaren i Windows

Ett enda ord: Här är en enlinjedel för att göra exakt det:

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

Resultatet:

Funktionen Get-Permissions

Vill du göra resultatet mer läsbart? Här är en PowerShell-funktion som använder anpassade etiketter (titlar i varje kolumn i tabellen).

Du kan antingen spara den som ett PowerShell-skript eller lägga till den i din PowerShell-profil så att den alltid är tillgänglig.

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

Du kan utelämna de två arvsrelaterade egenskaperna om du inte behöver den informationen.

Nu kan du använda Get-Permissions med mappnamnet:

Get-Permissions c:\myfolder

Utmatningen:

Du kan också leda utmatningen från dir-, ls- eller gci-kommandona, som alla är PowerShell-alias för cmdlet Get-ChildItem.

dir <sökväg> | % {Get-Permissions -path $_.fullname}

En funktion för att öppna Egenskaper för fil eller mapp i Utforskaren

Om du verkligen vill se behörigheterna i det grafiska gränssnittet i Utforskaren kan du använda den här funktionen för att öppna sidan Egenskaper > Allmänt för filen eller mappen. (Jag har inte hittat något sätt att direkt öppna fliken Säkerhet. Om du vet hur man gör det, dela gärna med dig i kommentarerna till inlägget.)

12345678910111213141516171819202122
funktion Get-Properties ($path) {#exit if path not foundif (-not ($path | Test-Path))) { Write-Host "$path not found. Ange en giltig fil- eller mappväg." -foregroundcolor red return } $o = new-object -com Shell.Application$item = get-item $path if ($item.gettype() -eq ) {write-host "Found folder $path... Hämta egenskaper"$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")}}

Nu är det bara att använda Get-Properties <Mappa med filnamn> för att snabbt öppna filens eller mappens egenskapssida från shell.


Figur 2: Använd funktionen Get-Properties för att snabbt öppna en fil eller mapps egenskaper från PowerShell

PowerShell-modul för filsystemsäkerhet

Microsoft PFE Raimund Andrée publicerade PowerShell-modulen för filsystemsäkerhet för ett tag sedan. Den lägger till några användbara cmdlets för att hantera filsystembehörigheter med hjälp av PowerShell. Kolla också in hans motsvarande blogginlägg Weekend Scripter: Använd PowerShell för att hämta, lägga till och ta bort NTFS-behörigheter och NTFSSecurity Tutorial 2 – Managing NTFS Inheritance and Using Privileges.

Tags
PowerShell Scripts Security Windows

Lämna ett svar

Din e-postadress kommer inte publiceras.