sexta-feira, 10 de maio de 2013

Copiando Pastas com suas permissões

Olá,

Para você listar as permissões de uma pasta, utilize o comando get-acl

ex: get-acl c:\log






 
Utilize (get-acl c:\log).access para melhor a visualização.


























Podemos pegar o resultado e armazenar em uma variavel.

$acl= get-acl c:\log

E aplicar essas permissoes em outra pasta:

set-acl c:\log2 $acl

Com isso podemos copiar uma pasta e aplicar suas permissões originais.

Abaixo um script que clona uma estrutura de pastas e sub pastas com suas permissões originais.


cls

write-host "Copia pasta e subpastas com suas permissoes"
$PastaDeOrigem = Read-Host "Digite o caminho da pasta de origem:"
$PastaRaiz = Get-ChildItem -Recurse -Force $PastaDeOrigem
$PastaDeDestino = Read-Host "Digite o caminho da pasta de destino:"

#criando pasta raiz
$Permissoes = Get-Acl $PastaDeOrigem
if(Test-Path $PastaDeDestino){

  Set-Acl $PastaDeDestino $Permissoes

  }
  else{
       New-Item -ItemType directory -Path $PastaDeDestino
       Set-Acl $PastaDeDestino $Permissoes   
     }
#criando subpastas

foreach($PastaAtual in $PastaRaiz){
 
    

     [string]$pasta = $PastaAtual.FullName    
     $pastalower = $Pasta.ToLower()    
     $newfilename = $pastalower.Replace($PastaDeOrigem,$PastaDeDestino)
     $Permissoes = Get-Acl $pastalower
     New-Item -ItemType directory -Path $newfilename

     Set-Acl $newfilename $Permissoes
 
    }




Abraços