Compartilhar via


Set-Acl

Altera o descritor de segurança de um recurso especificado, como um arquivo ou uma chave do Registro.

Sintaxe

Set-Acl [-Caminho] <string[]> [-AclObject] <ObjectSecurity> [-Exclude <string[]>] [-Filter <string>] [-Include <string[]>] [-PassThru] [-Confirm] [-WhatIf] [-UseTransaction] [<CommonParameters>]

Descrição

O cmdlet Set-Acl altera o descritor de segurança de um recurso especificado, como um arquivo ou uma chave de Registro, para que corresponda aos valores em um descritor de segurança que você fornece.

Para usar Set-Acl, use o parâmetro Path para identificar o recurso cujo descritor de segurança você deseja alterar e use o parâmetro AclObject para fornecer um descritor de segurança que possui os valores você deseja aplicar. Set-Acl usa o valor do parâmetro AclObject como um modelo e altera os valores no descritor de segurança do recurso a fim de corresponder aos valores no parâmetro AclObject.

Parâmetros

-AclObject <ObjectSecurity>

Especifica uma ACL com os valores de propriedade desejados. Set-Acl altera a ACL do recurso especificado pelo parâmetro Path para corresponder os valores no objeto de segurança especificado.

Você pode salvar a saída de um comando Get-Acl em uma variável e, em seguida, usar o parâmetro AclObject para passar a variável, ou digitar um comando Get-Acl.

Necessário?

true

Posição?

2

Valor padrão

Aceitar entrada do pipeline?

true (ByValue)

Aceitar caracteres curinga?

false

-Exclude <string[]>

Omite os itens especificados. O valor desse parâmetro qualifica o parâmetro Path. Digite um elemento ou padrão do caminho, como "*.txt". Os caracteres curinga são permitidos.

Necessário?

false

Posição?

named

Valor padrão

Aceitar entrada do pipeline?

false

Aceitar caracteres curinga?

false

-Filter <string>

Especifica um filtro no formato ou no idioma do provedor. O valor desse parâmetro qualifica o parâmetro Path. A sintaxe do filtro, incluindo o uso dos caracteres curinga, depende do provedor. Os filtros são mais eficientes do que outros parâmetros porque o provedor os aplica durante a recuperação dos objetos, em vez de fazer com que o Windows PowerShell os filtre depois de recuperados.

Necessário?

false

Posição?

named

Valor padrão

Aceitar entrada do pipeline?

false

Aceitar caracteres curinga?

false

-Include <string[]>

Altera somente os itens especificados. O valor desse parâmetro qualifica o parâmetro Path. Digite um elemento ou padrão do caminho, como "*.txt". Os caracteres curinga são permitidos.

Necessário?

false

Posição?

named

Valor padrão

Aceitar entrada do pipeline?

false

Aceitar caracteres curinga?

false

-PassThru

Retorna um objeto que representa o descritor de segurança. Por padrão, este cmdlet não gera nenhuma saída.

Necessário?

false

Posição?

named

Valor padrão

Aceitar entrada do pipeline?

false

Aceitar caracteres curinga?

false

-Caminho <string[]>

Identifica o recurso cujo descritor de segurança você deseja alterar. Insira o caminho para um recurso, como um caminho para um arquivo ou uma chave do Registro. Os caracteres curinga são permitidos.

Se você passar um objeto de segurança para Set-Acl (usando o parâmetro AclObject ou passando um objeto de Get-Acl para Set-Acl) e omitir o parâmetro Path (nome e valor), Set-Acl usará o caminho incluído no objeto de segurança.

Necessário?

true

Posição?

1

Valor padrão

Aceitar entrada do pipeline?

true (ByPropertyName)

Aceitar caracteres curinga?

false

-Confirm

Solicita confirmação antes da execução do comando.

Necessário?

false

Posição?

named

Valor padrão

Aceitar entrada do pipeline?

false

Aceitar caracteres curinga?

false

-WhatIf

Descreve o que aconteceria se você executasse o comando sem, na verdade, fazê-lo.

Necessário?

false

Posição?

named

Valor padrão

Aceitar entrada do pipeline?

false

Aceitar caracteres curinga?

false

-UseTransaction

Inclui o comando na transação ativa. Este parâmetro é válido apenas quando uma transação está em andamento. Para obter mais informações, consulte about_Transactions.

Necessário?

false

Posição?

named

Valor padrão

Aceitar entrada do pipeline?

false

Aceitar caracteres curinga?

false

<CommonParameters>

Esse cmdlet oferece suporte aos parâmetros comuns: -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer e -OutVariable. Para obter mais informações, consulte about_Commonparameters.

Entradas e saídas

O tipo de entrada é o tipo dos objetos que você pode canalizar para o cmdlet. O tipo de retorno é o tipo dos objetos que o cmdlet retorna.

Entradas

System.Security.AccessControl.ObjectSecurity

Você pode enviar um descritor de segurança para Set-Acl.

Saídas

Nenhum ou objeto de segurança

Por padrão, Set-Acl não gera nenhuma saída. Contudo, se você usar o parâmetro -Passthru, ele gerará um objeto de segurança. O tipo do objeto de segurança depende do tipo do recurso.

Observações

O cmdlet Set-Acl tem suporte no sistema de arquivo e nos provedores de Registro do Windows PowerShell. Dessa forma, ele pode ser usado para alterar os descritores de segurança de arquivos, diretórios e chaves do Registro.

Quando estiver especificando diversos valores para um parâmetro, utilize vírgulas para separá-los. Por exemplo, "<nome-do-parâmetro><valor1>, <valor2>".

Exemplo 1

C:\PS>$DogACL = get-acl c:\dog.txt

C:\PS>set-acl -path C:\cat.txt -AclObject $DogACL

Descrição
-----------
Esses comandos copiam os valores do descritor de segurança do arquivo Dog.txt para o descritor de segurança do arquivo Cat.txt. Quando os comandos estiverem completos, os descritores de segurança dos arquivos Dog.txt e Cat.txt serão idênticos.

O primeiro comando usa o cmdlet Get-Acl para obter o descritor de segurança do arquivo Dog.txt. O operador de atribuição (=) armazena o descritor de segurança no valor da variável $DogACL. 

O segundo comando usa Set-Acl para alterar os valores na ACL de Cat.txt para os valores em $DogACL.

O valor do parâmetro Path é o caminho para o arquivo Cat.txt. O valor do parâmetro AclObject é a ACL de modelo, neste caso, a ACL de Dog.txt quando foi salva na variável $DogACL.





Exemplo 2

C:\PS>get-acl c:\dog.txt | set-acl -path C:\cat.txt

Descrição
-----------
Esse comando é quase igual ao comando do exemplo anterior, exceto pelo fato de ele usar um operador de pipeline para enviar o descritor de segurança recuperado em um comando Get-Acl para um comando Set-Acl.

O primeiro comando usa o cmdlet Get-Acl para obter o descritor de segurança do arquivo Dog.txt. O operador de pipeline (|) transmite um objeto que representa o descritor de segurança Dog.txt para o comando Set-Acl.

O segundo comando usa Set-Acl para aplicar o descritor de segurança do arquivo Dog.txt a Cat.txt. Quando o comando estiver completo, as ACLs dos arquivos Dog.txt e Cat.txt serão idênticas.





Exemplo 3

C:\PS>$newACL = get-acl file0.txt

C:\PS>get-childitem c:\temp -recurse -include *.txt -force | set-acl -aclobject $newacl

Descrição
-----------
Esses comandos aplicam os descritores de segurança no arquivo File0.txt a todos os arquivos de texto no diretório C:\Temp e a todos os seus subdiretórios.

O primeiro comando obtém o descritor de segurança do arquivo File0.txt, localizado no diretório atual, e usa o operador de atribuição (=) para armazená-lo na variável $newACL.

O primeiro comando no pipeline usa o cmdlet Get-ChildItem para obter todos os arquivos de texto no diretório C:\Temp. O parâmetro Recurse estende o comando a todos os subdiretórios de C:\temp. O parâmetro Include limita os arquivos recuperados para aqueles com a extensão de nome do arquivo ".txt". O parâmetro Force obtém arquivos ocultos, que, de outra forma, seriam excluídos. (Não é possível usar "c:\temp\*.txt", pois o parâmetro Recurse funciona em diretórios, não em arquivos.)

O operador de pipeline (|) envia os objetos que representam os arquivos recuperados para o comando Set-Acl, o qual aplica o descritor de segurança no parâmetro AclObject a todos os arquivos contidos no pipeline.

Na prática, é melhor usar o parâmetro Whatif com todos os comandos Set-Acl que podem afetar mais de um recurso. Neste caso, o segundo comando no pipeline seria "set-acl -aclobject $newacl -whatif". Esse comando lista os arquivos que seriam afetados pelo comando. Depois de rever o resultado, você pode executar o comando novamente sem o parâmetro Whatif.





Consulte também

Conceitos

Get-Acl