Compartilhar via


Set-Acl

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

Sintaxe

Set-Acl
   [-Path] <String[]>
   [-AclObject] <Object>
   [[-CentralAccessPolicy] <String>]
   [-ClearCentralAccessPolicy]
   [-Passthru]
   [-Filter <String>]
   [-Include <String[]>]
   [-Exclude <String[]>]
   [-WhatIf]
   [-Confirm]
   [-UseTransaction]
   [<CommonParameters>]
Set-Acl
   [-InputObject] <PSObject>
   [-AclObject] <Object>
   [-Passthru]
   [-Filter <String>]
   [-Include <String[]>]
   [-Exclude <String[]>]
   [-WhatIf]
   [-Confirm]
   [-UseTransaction]
   [<CommonParameters>]
Set-Acl
   -LiteralPath <String[]>
   [-AclObject] <Object>
   [[-CentralAccessPolicy] <String>]
   [-ClearCentralAccessPolicy]
   [-Passthru]
   [-Filter <String>]
   [-Include <String[]>]
   [-Exclude <String[]>]
   [-WhatIf]
   [-Confirm]
   [-UseTransaction]
   [<CommonParameters>]

Description

O cmdlet Set-Acl altera o descritor de segurança de um item especificado, como um arquivo ou uma chave do Registro, para corresponder aos valores em um descritor de segurança fornecido.

Para usar , use o parâmetro Path ou InputObject para identificar o item cujo descritor de segurança você deseja alterar. Em seguida, use os parâmetros aclObject ou SecurityDescriptor para fornecer um descritor de segurança que tenha os valores que você deseja aplicar. Set-Acl aplica o descritor de segurança fornecido. Ele usa o valor do parâmetro AclObject como um modelo e altera os valores no descritor de segurança do item para corresponder aos valores no parâmetro AclObject.

Exemplos

Exemplo 1: copiar um descritor de segurança de um arquivo para outro

$DogACL = Get-Acl -Path "C:\Dog.txt"
Set-Acl -Path "C:\Cat.txt" -AclObject $DogACL

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 são concluídos, os descritores de segurança dos arquivos Dog.txt e Cat.txt sã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 do modelo, nesse caso, a ACL de Dog.txt conforme salva na variável $DogACL.

Exemplo 2: Usar o operador de pipeline para passar um descritor

Get-Acl -Path "C:\Dog.txt" | Set-Acl -Path "C:\Cat.txt"

Esse comando é quase o mesmo que o comando no exemplo anterior, exceto que ele usa um operador de pipeline para enviar o descritor de segurança de um Get-Aclcommand 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 (|) passa um objeto que representa o descritor de segurança Dog.txt para o cmdlet Set-Acl.

O segundo comando usa Set-Acl para aplicar o descritor de segurança de Dog.txt a Cat.txt. Quando o comando é concluído, as ACLs dos arquivos Dog.txt e Cat.txt são idênticas.

Exemplo 3: aplicar um descritor de segurança a vários arquivos

$NewAcl = Get-Acl File0.txt
Get-ChildItem -Path "C:\temp" -Recurse -Include "*.txt" -Force | Set-Acl -AclObject $NewAcl

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

O primeiro comando obtém o descritor de segurança do arquivo File0.txt 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 para todos os subdiretórios de C:\temp. O parâmetro Include limita os arquivos recuperados para aqueles com a extensão de nome de 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", porque 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 cmdlet Set-Acl, que aplica o descritor de segurança no parâmetro AclObject a todos os arquivos no pipeline.

Na prática, é melhor usar o parâmetro WhatIf com todos os comandos Set-Acl que podem afetar mais de um item. Nesse caso, o segundo comando no pipeline seria "Set-Acl -AclObject $NewAcl -WhatIf". Esse comando lista os arquivos que seriam afetados pelo comando. Depois de examinar o resultado, você pode executar o comando novamente sem o parâmetro WhatIf.

Parâmetros

-AclObject

Especifica uma ACL com os valores de propriedade desejados. altera a ACL do item especificado pelo de Caminho ou parâmetro InputObject para corresponder aos valores no objeto de segurança especificado.

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

Tipo:Object
Cargo:1
Valor padrão:None
Obrigatório:True
Aceitar a entrada de pipeline:True
Aceitar caracteres curinga:False

-CentralAccessPolicy

Estabelece ou altera a política de acesso central do item. Insira a ID do CAP ou o nome amigável de uma política de acesso central no computador.

A partir do Windows Server 2012, os administradores podem usar o Active Directory e a Política de Grupo para definir políticas de acesso central para usuários e grupos. Para obter mais informações, consulte Controle de Acesso Dinâmico: Visão geral do cenário.

Esse parâmetro foi introduzido no Windows PowerShell 3.0.

Tipo:String
Cargo:2
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:True
Aceitar caracteres curinga:False

-ClearCentralAccessPolicy

Remove a política de acesso central do item especificado.

A partir do Windows Server 2012, os administradores podem usar o Active Directory e a Política de Grupo para definir políticas de acesso central para usuários e grupos. Para obter mais informações, consulte Controle de Acesso Dinâmico: Visão geral do cenário.

Esse parâmetro foi introduzido no Windows PowerShell 3.0.

Tipo:SwitchParameter
Cargo:Named
Valor padrão:False
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Confirm

Solicita a confirmação antes de executar o cmdlet.

Tipo:SwitchParameter
Aliases:cf
Cargo:Named
Valor padrão:False
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Exclude

Omite os itens especificados. O valor desse parâmetro qualifica o parâmetro Path. Insira um elemento ou padrão de caminho, como "*.txt". Curingas são permitidos.

Tipo:String[]
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:True

-Filter

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

Tipo:String
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:True

-Include

Altera apenas os itens especificados. O valor desse parâmetro qualifica o parâmetro Path. Insira um elemento ou padrão de caminho, como "*.txt". Curingas são permitidos.

Tipo:String[]
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:True

-InputObject

Altera o descritor de segurança do objeto especificado. Insira uma variável que contenha o objeto ou um comando que obtém o objeto.

Não é possível canalizar o objeto a ser alterado para Set-Acl. Em vez disso, use o parâmetro InputObject explicitamente no comando.

Esse parâmetro foi introduzido no Windows PowerShell 3.0.

Tipo:PSObject
Cargo:0
Valor padrão:None
Obrigatório:True
Aceitar a entrada de pipeline:True
Aceitar caracteres curinga:False

-LiteralPath

Altera o descritor de segurança do item especificado. Ao contrário docaminho , o valor do parâmetro LiteralPath é usado exatamente como ele é digitado. Nenhum caractere é interpretado como curinga. Se o caminho incluir caracteres de escape, coloque-o entre aspas simples. As aspas simples dizem ao PowerShell para não interpretar nenhum caractere como sequências de escape.

Esse parâmetro foi introduzido no Windows PowerShell 3.0.

Tipo:String[]
Aliases:PSPath
Cargo:Named
Valor padrão:None
Obrigatório:True
Aceitar a entrada de pipeline:True
Aceitar caracteres curinga:False

-Passthru

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

Tipo:SwitchParameter
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Path

Altera o descritor de segurança do item especificado. Insira o caminho para um item, como um caminho para um arquivo ou chave do Registro. Curingas são permitidos.

Se você passar um objeto de segurança para Set-Acl (usando os parâmetros AclObject ou SecurityDescriptor ou passando um objeto de segurança 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.

Tipo:String[]
Cargo:0
Valor padrão:None
Obrigatório:True
Aceitar a entrada de pipeline:True
Aceitar caracteres curinga:True

-UseTransaction

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

Tipo:SwitchParameter
Aliases:usetx
Cargo:Named
Valor padrão:False
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-WhatIf

Mostra o que aconteceria se o cmdlet fosse executado. O cmdlet não é executado.

Tipo:SwitchParameter
Aliases:wi
Cargo:Named
Valor padrão:False
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

Entradas

System.Security.AccessControl.ObjectSecurity, System.Security.AccessControl.CommonSecurityDescriptor

Você pode canalizar um objeto ACL ou um descritor de segurança para Set-Acl.

Saídas

FileSecurity

Por padrão, Set-Acl não gera nenhuma saída. No entanto, 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 item.

Observações

O cmdlet Set-Acl é compatível com o sistema de arquivos do PowerShell e provedores de registro. Dessa forma, você pode usá-lo para alterar os descritores de segurança de arquivos, diretórios e chaves do Registro.