Hent tilladelser til filer eller mapper ved hjælp af PowerShell

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

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.