Obter permissões de arquivo ou pasta usando PowerShell

O Get-Acl cmdlet no módulo Segurança do PowerShell (Microsoft.PowerShell.Security) faz um ótimo trabalho para obter permissões de arquivo ou pasta (também conhecido como a Lista de Controle de Acesso ou ACL). Mas obter informações úteis a partir da saída padrão pode levar algum tempo para se acostumar.

Em vez disso, seria ótimo poder simplesmente ver o que a aba Segurança de um arquivo, pasta ou outro recurso exibe, mas sem ter que passar pela interface do File Explorer e vários cliques.


Figure 1: Aba Segurança de uma pasta no Windows Explorer

One-liner: Obter permissões de arquivo ou pasta

Aqui está uma linha única para fazer exatamente isso:

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

A saída:

A função Get-Permissions

Quer fazer a saída mais legível? Aqui está uma função PowerShell que utiliza etiquetas personalizadas (títulos em cada coluna da tabela).

Pode guardá-la como um script PowerShell ou adicioná-la ao seu perfil PowerShell para que esteja sempre disponível.

123456789
 função 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="Bandeiras da herança";Expressão={$_.Bandeiras da herança}}}, `@{Label="Bandeiras de Propagação";Expressão={$_.Bandeiras de Propagação}}} | ft -auto}

Você pode omitir as duas propriedades relacionadas à herança se você não precisar dessa informação.

Agora você pode usar o Get-Permissions com o nome da pasta:

Get-Permissions c:\myfolder

A saída:

Você também pode canalizar a saída dos comandos dir, ls ou gci, todos os quais são apelidos PowerShell para o Get-ChildItem cmdlet.

dir <caminho> | % {Passar-Permissões -caminho $_.fullname}

Uma função para abrir as Propriedades do ficheiro ou pasta no Explorer

Se realmente gosta de ver as permissões na GUI do File Explorer, pode usar esta função para abrir as Propriedades > Página geral do ficheiro ou pasta. (Ainda não encontrei uma forma de abrir directamente o separador Segurança. Se você sabe como fazer isso, por favor compartilhe nos comentários do post).

12345678910111213141516171819202122
função Get-Properties ($caminho) {#exit if path not foundif (-not ($caminho |Caminho de Teste)) {Write-Host "$caminho não encontrado. Por favor, especifique um caminho de arquivo ou pasta válido". -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("$caminho")$fso.self.InvokeVerb("propriedades") } if ($item.gettype() -eq ){write-host "Found file $path... Getting properties"$fso = $o.Namespace($item.directoryname)$file = $fso.parsename($item.pschildname)$file.InvokeVerb("properties")}}}

Agora basta usar Get-Properties <Pasta do nome do ficheiro> para abrir rapidamente a página de propriedades do ficheiro ou pasta a partir da shell.


Figure 2: Use a função Get-Properties para abrir rapidamente um arquivo ou pasta de propriedades do PowerShell

File System Security PowerShell Module

Microsoft PFE Raimund Andrée publicou o File System Security PowerShell Module há um tempo atrás. Ele adiciona alguns cmdlets úteis para gerenciar as permissões do sistema de arquivos usando o PowerShell. Confira também seus posts correspondentes no blog Weekend Scripter: Use PowerShell para obter, adicionar e remover permissões NTFS e NTFSSecurity Tutorial 2 – Managing NTFS Inheritance and Using Privileges.

Tags
PowerShell Scripts Security Windows

Deixe uma resposta

O seu endereço de email não será publicado.