Partilhar via


Set-Acl

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

Sintaxe

ByPath (Predefinição)

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

ByInputObject

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

ByLiteralPath

Set-Acl
    [-AclObject] <Object>
    [[-CentralAccessPolicy] <String>]
    -LiteralPath <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 Set-Acl, utilize o parâmetro Path ou InputObject para identificar o item do qual deseja alterar o descritor de segurança. Em seguida, use os parâmetros AclObject ou SecurityDescriptor para fornecer um descritor de segurança que tenha os valores que pretende 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 ficheiro 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, neste caso, a ACL de Dog.txt como 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 ficheiros

$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 a todos os subdiretórios de C:\temp. O parâmetro Include limita os arquivos recuperados àqueles 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. Neste caso, o segundo comando no pipeline seria "Set-Acl -AclObject $NewAcl -WhatIf". Este comando lista os arquivos que seriam afetados pelo comando. Depois de revisar 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. Set-Acl altera a ACL do item especificado pelo parâmetro Path ou InputObject para corresponder aos valores do 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.

Propriedades dos parâmetros

Tipo:Object
Default value:None
Suporta carateres universais:False
NãoMostrar:False

Conjuntos de parâmetros

(All)
Position:1
Obrigatório:True
Valor do pipeline:True
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False

-CentralAccessPolicy

Estabelece ou altera a política de acesso central do item. Insira o ID 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 Ative Directory e a Diretiva de Grupo para definir políticas de acesso central para usuários e grupos. Para obter mais informações, consulte Controlo de Acesso Dinâmico: Visão Geral do Cenário.

Esse parâmetro foi introduzido no Windows PowerShell 3.0.

Propriedades dos parâmetros

Tipo:String
Default value:None
Suporta carateres universais:False
NãoMostrar:False

Conjuntos de parâmetros

ByPath
Position:2
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:True
Valor dos restantes argumentos:False
ByLiteralPath
Position:2
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:True
Valor dos restantes argumentos:False

-ClearCentralAccessPolicy

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

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

Esse parâmetro foi introduzido no Windows PowerShell 3.0.

Propriedades dos parâmetros

Tipo:SwitchParameter
Default value:False
Suporta carateres universais:False
NãoMostrar:False

Conjuntos de parâmetros

ByPath
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False
ByLiteralPath
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False

-Confirm

Solicita confirmação antes de executar o cmdlet.

Propriedades dos parâmetros

Tipo:SwitchParameter
Default value:False
Suporta carateres universais:False
NãoMostrar:False
Aliases:Cf.

Conjuntos de parâmetros

(All)
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos: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.

Propriedades dos parâmetros

Tipo:

String[]

Default value:None
Suporta carateres universais:True
NãoMostrar:False

Conjuntos de parâmetros

(All)
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False

-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 curingas, depende do provedor. Os filtros são mais eficientes do que outros parâmetros, porque o provedor os aplica ao recuperar os objetos, em vez de fazer com que o PowerShell filtre os objetos depois que eles são recuperados.

Propriedades dos parâmetros

Tipo:String
Default value:None
Suporta carateres universais:True
NãoMostrar:False

Conjuntos de parâmetros

(All)
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False

-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.

Propriedades dos parâmetros

Tipo:

String[]

Default value:None
Suporta carateres universais:True
NãoMostrar:False

Conjuntos de parâmetros

(All)
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False

-InputObject

Altera o descritor de segurança do objeto especificado. Insira uma variável que contenha o objeto ou um comando que obtenha 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.

Propriedades dos parâmetros

Tipo:PSObject
Default value:None
Suporta carateres universais:False
NãoMostrar:False

Conjuntos de parâmetros

ByInputObject
Position:0
Obrigatório:True
Valor do pipeline:False
Valor do pipeline por nome de propriedade:True
Valor dos restantes argumentos:False

-LiteralPath

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

Esse parâmetro foi introduzido no Windows PowerShell 3.0.

Propriedades dos parâmetros

Tipo:

String[]

Default value:None
Suporta carateres universais:False
NãoMostrar:False
Aliases:PSPath

Conjuntos de parâmetros

ByLiteralPath
Position:Named
Obrigatório:True
Valor do pipeline:False
Valor do pipeline por nome de propriedade:True
Valor dos restantes argumentos: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.

Propriedades dos parâmetros

Tipo:SwitchParameter
Default value:None
Suporta carateres universais:False
NãoMostrar:False

Conjuntos de parâmetros

(All)
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos: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 o AclObject ou SecurityDescriptor parâmetros 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.

Propriedades dos parâmetros

Tipo:

String[]

Default value:None
Suporta carateres universais:True
NãoMostrar:False

Conjuntos de parâmetros

ByPath
Position:0
Obrigatório:True
Valor do pipeline:False
Valor do pipeline por nome de propriedade:True
Valor dos restantes argumentos:False

-UseTransaction

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

Propriedades dos parâmetros

Tipo:SwitchParameter
Default value:False
Suporta carateres universais:False
NãoMostrar:False
Aliases:Usetx

Conjuntos de parâmetros

(All)
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False

-WhatIf

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

Propriedades dos parâmetros

Tipo:SwitchParameter
Default value:False
Suporta carateres universais:False
NãoMostrar:False
Aliases:Wi

Conjuntos de parâmetros

(All)
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False

CommonParameters

Este cmdlet suporta os parâmetros comuns: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Para obter mais informações, consulte about_CommonParameters.

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.

Notas

O cmdlet Set-Acl é suportado pelo sistema de arquivos do PowerShell e pelos provedores de registro. Como tal, você pode usá-lo para alterar os descritores de segurança de arquivos, diretórios e chaves do Registro.