Altere o proprietário recursivamente com o Powershell?

7

Estou tentando usar o Powershell para alterar o proprietário de uma pasta, de forma recursiva.

Estou basicamente usando este código:

$acct1 = New-Object System.Security.Principal.NTAccount('DOMAIN\Enterprise Admins')
$profilefolder = Get-Item MyFolder
$acl1 = $profilefolder.GetAccessControl()
$acl1.SetOwner($acct1)
set-acl -aclobject $acl1 -path MyFolder

Isso alterará a propriedade no primeiro nível, mas não para quaisquer subpastas ou arquivos. Existe uma maneira de estender o escopo para todo o conteúdo de MyFolder ?

    
por Mikael Grönfelt 02.04.2012 / 16:03

2 respostas

12

O comando takeown faz exatamente o que você está tentando fazer. É um utilitário normal do Windows.

Esse snippet aplicará a propriedade ao usuário atual, mas você poderá defini-lo para qualquer usuário que desejar.

link

takeown /f "c:\folder\subfolder" /r

Se você tiver problemas, verifique se está executando a janela cmd / powershell com permissões de administrador. O mesmo se aplica à outra resposta específica do PowerShell.

    
por 28.10.2012 / 17:29
4

O cmdlet Set-ACL usará o parâmetro path do canal, portanto, a maneira recomendada é canalizar o conteúdo de um diretório para definir o proprietário em cada item:

dir -r c:\Users\goyuix\temp | set-acl -aclobject $acl1

Isso definirá recursivamente o proprietário em todas as pastas / arquivos no diretório temporário em meu perfil.

    
por 02.04.2012 / 16:32