Set-Acl
Cambia el descriptor de seguridad de un elemento especificado, como un archivo o una clave del Registro.
Sintaxis
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
El Set-Acl
cmdlet cambia el descriptor de seguridad de un elemento especificado, como un archivo o una clave del Registro, para que coincida con los valores de un descriptor de seguridad que proporcione.
Para usar Set-Acl
, use el parámetro Path o InputObject para identificar el elemento cuyo descriptor de seguridad desea cambiar. A continuación, use los parámetros AclObject o SecurityDescriptor para proporcionar un descriptor de seguridad que tenga los valores que desea aplicar. Set-Acl
aplica el descriptor de seguridad proporcionado. Usa el valor del parámetro AclObject como modelo y cambia los valores del descriptor de seguridad del elemento para que coincidan con los valores del parámetro AclObject .
Ejemplos
Ejemplo 1: Copiar un descriptor de seguridad de un archivo a otro
$DogACL = Get-Acl -Path "C:\Dog.txt"
Set-Acl -Path "C:\Cat.txt" -AclObject $DogACL
Estos comandos copian los valores del descriptor de seguridad del archivo Dog.txt en el descriptor de seguridad del archivo Cat.txt. Cuando los comandos se hayan completado, los descriptores de seguridad de los archivos Dog.txt y Cat.txt serán idénticos.
El primer comando usa el Get-Acl
cmdlet para obtener el descriptor de seguridad del archivo Dog.txt.
El operador de asignación (=
) almacena el descriptor de seguridad en el valor de la variable $DogACL.
El segundo comando usa Set-Acl
para cambiar los valores de la ACL de Cat.txt a los valores de $DogACL
.
El valor del parámetro Path es la ruta de acceso al archivo Cat.txt. El valor del parámetro AclObject es la ACL del modelo, en este caso, la ACL de Dog.txt como se guarda en la $DogACL
variable.
Ejemplo 2: Uso del operador de canalización para pasar un descriptor
Get-Acl -Path "C:\Dog.txt" | Set-Acl -Path "C:\Cat.txt"
Este comando es casi el mismo que el comando del ejemplo anterior, salvo que usa un operador de canalización (|
) para enviar el descriptor de seguridad de un Get-Acl
comando a un Set-Acl
comando.
El primer comando usa el Get-Acl
cmdlet para obtener el descriptor de seguridad del archivo Dog.txt. El operador de canalización (|
) pasa un objeto que representa el descriptor de seguridad Dog.txt al Set-Acl
cmdlet .
El segundo comando usa Set-Acl
para aplicar el descriptor de seguridad de Dog.txt a Cat.txt.
Cuando el comando se haya completado, las ACL de los archivos Dog.txt y Cat.txt serán idénticas.
Ejemplo 3: Aplicación de un descriptor de seguridad a varios archivos
$NewAcl = Get-Acl File0.txt
Get-ChildItem -Path "C:\temp" -Recurse -Include "*.txt" -Force | Set-Acl -AclObject $NewAcl
Estos comandos aplican los descriptores de seguridad del archivo File0.txt a todos los archivos de texto del C:\Temp
directorio y a todos sus subdirectorios.
El primer comando obtiene el descriptor de seguridad del archivo File0.txt en el directorio actual y usa el operador de asignación (=
) para almacenarlo en la $NewACL
variable.
El primer comando de la canalización usa el cmdlet Get-ChildItem para obtener todos los archivos de texto del C:\Temp
directorio. El parámetro Recurse extiende el comando a todos los subdirectorios de C:\temp
. El parámetro Include limita los archivos recuperados a los que tienen la extensión de nombre de .txt
archivo. El parámetro Force obtiene archivos ocultos, que de lo contrario se excluirían. (No puede usar c:\temp\*.txt
, porque el parámetro Recurse funciona en directorios, no en archivos).
El operador de canalización (|
) envía los objetos que representan los archivos recuperados al Set-Acl
cmdlet , que aplica el descriptor de seguridad en el parámetro AclObject a todos los archivos de la canalización.
En la práctica, es mejor usar el parámetro WhatIf con todos los Set-Acl
comandos que pueden afectar a más de un elemento. En este caso, el segundo comando de la canalización sería Set-Acl -AclObject $NewAcl -WhatIf
. Este comando muestra los archivos que se verían afectados por el comando. Después de revisar el resultado, puede volver a ejecutar el comando sin el parámetro WhatIf .
Ejemplo 4: Deshabilitar la herencia y conservar las reglas de acceso heredadas
$NewAcl = Get-Acl -Path "C:\Pets\Dog.txt"
$isProtected = $true
$preserveInheritance = $true
$NewAcl.SetAccessRuleProtection($isProtected, $preserveInheritance)
Set-Acl -Path "C:\Pets\Dog.txt" -AclObject $NewAcl
Estos comandos deshabilitan la herencia de acceso de las carpetas primarias, a la vez que conservan las reglas de acceso heredadas existentes.
El primer comando usa el Get-Acl
cmdlet para obtener el descriptor de seguridad del archivo Dog.txt.
A continuación, se crean variables para convertir las reglas de acceso heredadas en reglas de acceso explícitas. Para proteger las reglas de acceso asociadas a esta herencia, establezca la $isProtected
variable $true
en . Para permitir la herencia, establezca en $isProtected
$false
. Para obtener más información, consulte Establecimiento de la protección de reglas de acceso.
Establezca la $preserveInheritance
variable en $true
para conservar las reglas de acceso heredadas o $false
para quitar las reglas de acceso heredadas. A continuación, la protección de reglas de acceso se actualiza mediante el método SetAccessRuleProtection().
El último comando usa Set-Acl
para aplicar el descriptor de seguridad de a Dog.txt. Cuando se complete el comando, las ACL del Dog.txt que se heredaron de la carpeta Pets se aplicarán directamente a Dog.txt y las nuevas directivas de acceso agregadas a Pets no cambiarán el acceso a Dog.txt.
Ejemplo 5: Conceder a los administradores el control total del archivo
$NewAcl = Get-Acl -Path "C:\Pets\Dog.txt"
# Set properties
$identity = "BUILTIN\Administrators"
$fileSystemRights = "FullControl"
$type = "Allow"
# Create new rule
$fileSystemAccessRuleArgumentList = $identity, $fileSystemRights, $type
$fileSystemAccessRule = New-Object -TypeName System.Security.AccessControl.FileSystemAccessRule -ArgumentList $fileSystemAccessRuleArgumentList
# Apply new rule
$NewAcl.SetAccessRule($fileSystemAccessRule)
Set-Acl -Path "C:\Pets\Dog.txt" -AclObject $NewAcl
Este comando concederá el grupo BUILTIN\Administrators Control total del archivo Dog.txt.
El primer comando usa el Get-Acl
cmdlet para obtener el descriptor de seguridad del archivo Dog.txt.
Las variables siguientes se crean para conceder al grupo BUILTIN\Administrators control total del archivo Dog.txt. Variable $identity
establecida en el nombre de una cuenta de usuario. La $fileSystemRights
variable establecida en FullControl y puede ser cualquiera de los valores FileSystemRights que especifica el tipo de operación asociada a la regla de acceso. La $type
variable establecida en "Permitir" para especifica si se va a permitir o denegar la operación. La $fileSystemAccessRuleArgumentList
variable es una lista de argumentos que se va a pasar al realizar el nuevo objeto FileSystemAccessRule . A continuación, se crea un nuevo objeto FileSystemAccessRule y el objeto FileSystemAccessRule se pasa al método SetAccessRule() y agrega la nueva regla de acceso.
El último comando usa Set-Acl
para aplicar el descriptor de seguridad de a Dog.txt. Cuando se complete el comando, el grupo BUILTIN\Administrators tendrá control total de la Dog.txt.
Parámetros
-AclObject
Especifica una ACL con los valores de propiedad deseados. Set-Acl
cambia la ACL del elemento especificado por el parámetro Path o InputObject para que coincida con los valores del objeto de seguridad especificado.
Puede guardar la salida de un Get-Acl
comando en una variable y, a continuación, usar el parámetro AclObject para pasar la variable o escribir un Get-Acl
comando.
Tipo: | Object |
Posición: | 1 |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | False |
-CentralAccessPolicy
Establece o cambia la directiva de acceso central del elemento. Escriba el identificador CAP o el nombre descriptivo de una directiva de acceso central en el equipo.
A partir de Windows Server 2012, los administradores pueden usar Active Directory y directiva de grupo para establecer directivas de acceso central para usuarios y grupos. Para obtener más información, consulte Control de acceso dinámico: Información general sobre escenarios.
Este parámetro se incorporó en Windows PowerShell 3.0.
Tipo: | String |
Posición: | 2 |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | False |
-ClearCentralAccessPolicy
Elimina la directiva de acceso central del elemento especificado.
A partir de Windows Server 2012, los administradores pueden usar Active Directory y directiva de grupo para establecer directivas de acceso central para usuarios y grupos. Para obtener más información, consulte Control de acceso dinámico: Información general sobre escenarios.
Este parámetro se incorporó en Windows PowerShell 3.0.
Tipo: | SwitchParameter |
Posición: | Named |
Valor predeterminado: | False |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-Confirm
Le solicita su confirmación antes de ejecutar el cmdlet.
Tipo: | SwitchParameter |
Alias: | cf |
Posición: | Named |
Valor predeterminado: | False |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-Exclude
Omite los elementos especificados. El valor de este parámetro califica el parámetro Path . Escriba un elemento o patrón de ruta de acceso, como *.txt
. Se permiten los caracteres comodín.
Tipo: | String[] |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | True |
-Filter
Especifica un filtro en el formato o el lenguaje del proveedor. El valor de este parámetro califica el parámetro Path . La sintaxis del filtro, incluido el uso de caracteres comodín, depende del proveedor. Los filtros son más eficaces que otros parámetros, ya que el proveedor los aplica al recuperar los objetos, en lugar de que PowerShell filtre los objetos una vez recuperados.
Tipo: | String |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | True |
-Include
Cambia sólo los elementos especificados. El valor de este parámetro califica el parámetro Path .
Escriba un elemento o patrón de ruta de acceso, como *.txt
. Se permiten los caracteres comodín.
Tipo: | String[] |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | True |
-InputObject
Cambia el descriptor de seguridad del objeto especificado. Introduzca una variable que contenga el objeto o un comando que obtenga el objeto.
No se puede canalizar el objeto que se va a cambiar a Set-Acl
. En su lugar, use el parámetro InputObject explícitamente en el comando .
Este parámetro se incorporó en Windows PowerShell 3.0.
Tipo: | PSObject |
Posición: | 0 |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | False |
-LiteralPath
Cambia el descriptor de seguridad del elemento especificado. A diferencia de Path, el valor del parámetro LiteralPath se usa exactamente como se escribe. Ninguno de los caracteres se interpreta como caracteres comodín. Si la ruta de acceso incluye caracteres de escape, escríbala entre comillas simples ('
).
Las comillas simples indican a PowerShell que no interprete ningún carácter como secuencias de escape.
Este parámetro se incorporó en Windows PowerShell 3.0.
Tipo: | String[] |
Alias: | PSPath |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | False |
-PassThru
Devuelve un objeto que representa el descriptor de seguridad que se cambió. De forma predeterminada, este cmdlet no genera ningún resultado.
Tipo: | SwitchParameter |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-Path
Cambia el descriptor de seguridad del elemento especificado. Escriba la ruta de acceso a un elemento, como una ruta de acceso a un archivo o a una clave del Registro. Se permiten los caracteres comodín.
Si pasa un objeto de seguridad a Set-Acl
(ya sea mediante los parámetros AclObject o SecurityDescriptor o pasando un objeto de seguridad de Get-Acl a Set-Acl
) y omite el parámetro Path (nombre y valor), Set-Acl
usa la ruta de acceso que se incluye en el objeto de seguridad.
Tipo: | String[] |
Posición: | 0 |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | True |
-UseTransaction
Incluye el comando en la transacción activa. Este parámetro solo es válido cuando hay una transacción en curso. Para obtener más información, consulte about_Transactions.
Tipo: | SwitchParameter |
Alias: | usetx |
Posición: | Named |
Valor predeterminado: | False |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-WhatIf
Muestra lo que sucedería si se ejecutara el cmdlet. El cmdlet no se ejecuta.
Tipo: | SwitchParameter |
Alias: | wi |
Posición: | Named |
Valor predeterminado: | False |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
Entradas
Puede canalizar un objeto ACL a este cmdlet.
Puede canalizar un descriptor de seguridad a este cmdlet.
Salidas
None
De forma predeterminada, este cmdlet no devuelve ninguna salida.
Cuando se usa el parámetro PassThru , este cmdlet devuelve un objeto de seguridad. El tipo del objeto de seguridad depende del tipo del elemento.
Notas
El Set-Acl
cmdlet es compatible con el sistema de archivos de PowerShell y los proveedores del registro. Por lo tanto, se puede usar para cambiar los descriptores de seguridad de archivos, directorios y claves del Registro.