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