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