Encontrei um problema, escrevi um script que compacta arquivos PDF através de um programa e transfere direitos para um novo arquivo copiando do antigo para diferenciar o acesso a novos arquivos. Aqui está a parte do código que eu tenho é o problema
$owner = $origFile.GetAccessControl().GetOwner([System.Security.Principal.SecurityIdentifier])
$newFile = Get-Item -Path $PathoutFile
$FileSecurity = new-object System.Security.AccessControl.FileSecurity
$FileSecurity.SetOwner($owner)
[System.IO.File]::SetAccessControl($newFile, $FileSecurity)
Get-Acl -Path $origFile | Set-Acl -Path $newFile
Meu problema é o seguinte: executo o script usando privilégios de administrador de domínio, tudo funciona bem. Se eu usar uma conta de usuário de domínio e conceder direitos máximos ao diretório, um arquivo compactado será salvo nele e, neste caso, recebo o erro “Tentativa de realizar uma operação não autorizada. Não quero executar o script na conta de administrador por um motivo simples, acredito que tais direitos sejam redundantes para realizar esta operação. Estou aprendendo e cometendo erros, mas quero aprender a escrever bons scripts e gerenciar com competência as regras de acesso necessárias para o seu trabalho, por isso peço que me ajudem a descobrir o que preciso fazer para que os direitos sejam atribuídos ao usar o roteiro. Procurei informações no Google sobre esse assunto, mas não encontrei informações abrangentes. Encontrei informações de que você não pode fazer isso sem direitos de administrador para alterar o proprietário, mas não entendo por que não posso transferir os direitos para um novo arquivo neste caso. Por favor me ajude a resolver este problema. Definir o proprietário do arquivo antigo para o novo é uma tarefa opcional. As ações Ps são executadas em um compartilhamento de rede e o usuário sob o qual o script está sendo executado tem acesso total. A pasta de rede está localizada no Win Serv 2008 SP2 e o script é executado no Windows 10 Pro. Desde já, obrigado.
Responder1
Eu mesmo encontrei uma solução para meu problema principal usando o módulo NTFSSecurity PowerShell. A transferência dos direitos de acesso foi realizada utilizando o método Get-NTFSAccess $filein | Adicionar-NTFSAccess $fileout