Cmdletten Get-Acl i PowerShells sikkerhedsmodul (Microsoft.PowerShell.Security) gør et godt stykke arbejde med at hente tilladelser til filer eller mapper (også kendt som adgangskontrollisten eller ACL). Men det kan kræve lidt tilvænning at få nyttige oplysninger fra standardoutputtet.
Det ville i stedet være dejligt blot at kunne se, hvad fanen Sikkerhed for en fil, mappe eller anden ressource viser, men uden at skulle gennem File Explorer UI og flere klik.
Figur 1: Sikkerhedsfanen for en mappe i Windows Stifinder
Endnu en linje: Her er en one-liner til at gøre præcis det:
(get-acl <mappenavn>): (get-acl <mappenavn>).access | ft IdentityReference,FileSystemRights,AccessControlType,IsInherited,InheritanceFlags -auto
Opdatet:
Get-Permissions-funktionen
Vil du gøre outputtet mere læsbart? Her er en PowerShell-funktion, der bruger bruger tilpassede etiketter (titler i hver kolonne i tabellen).
Du kan enten gemme den som et PowerShell-script eller tilføje den til din PowerShell-profil, så den altid er tilgængelig.
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 udelade de to arverelaterede egenskaber, hvis du ikke har brug for disse oplysninger.
Nu kan du bruge Get-Permissions med mappenavnet:
Get-Permissions c:\myfolder
Opdatet:
Du kan også lede output fra dir-, ls- eller gci-kommandoerne, som alle er PowerShell-alliaser for Get-ChildItem-cmdletten, i rørledninger.
dir <path> | % {Get-Permissions -path $_.fullname}
En funktion til at åbne egenskaber for fil eller mappe i Stifinder
Hvis du virkelig gerne vil se tilladelserne i File Explorer GUI, kan du bruge denne funktion til at åbne den generelle side Egenskaber > for filen eller mappen. (Jeg har ikke fundet en måde at åbne fanen Sikkerhed direkte på. Hvis du ved, hvordan du gør det, må du gerne dele det i indlægskommentarerne).)
12345678910111213141516171819202122 |
function Get-Properties ($path) {#exit if path not foundif (-not ($path | Test-Path))) { Write-Host "$path not found. Angiv venligst en gyldig fil- eller mappesti." -foregroundcolor red return } $o = new-object -com Shell.Application$item = get-item $path if ($item.gettype() -eq ) {write-host "Fandt mappe $path... Hent egenskaber"$fso = $o.Namespace("$path")$fso.self.InvokeVerb("properties") } if ($item.gettype() -eq ){write-host "Fandt fil $path... Getting properties"$fso = $o.Namespace($item.directoryname)$file = $fso.parsename($item.pschildname)$file.InvokeVerb("properties")}}} |
Nu skal du bare bruge Get-Properties <Folder of file name> til hurtigt at åbne filens eller mappens egenskabsside fra shell’en.
Figur 2: Brug funktionen Get-Properties til hurtigt at åbne en fil eller mappes egenskaber fra PowerShell
File System Security PowerShell-modul
Microsoft PFE Raimund Andrée offentliggjorde for et stykke tid siden File System Security PowerShell-modulet. Det tilføjer nogle nyttige cmdlets til at administrere filsystemtilladelser ved hjælp af PowerShell. Tjek også hans tilsvarende blogindlæg Weekend Scripter: Use PowerShell to Get, Add, and Remove NTFS Permissions og NTFSSecurity Tutorial 2 – Managing NTFS Inheritance and Using Privileges.
Tags
PowerShell Scripts Security Windows