Saltar al contenido

PowerShell para establecer permisos de carpeta

Después de mucho trabajar pudimos encontrar la respuesta de esta dificultad que tantos lectores de este espacio presentan. Si tienes alguna información que compartir puedes aportar tu información.

Solución:

Especificación de la herencia en el FileSystemAccessRule() constructor corrige esto, como lo demuestra el código modificado a continuación (observe los dos nuevos parámetros de constructor insertados entre "FullControl" y "Allow").

$Acl = Get-Acl "\R9N2WRNShare"

$Ar = New-Object System.Security.AccessControl.FileSystemAccessRule("user", "FullControl", "ContainerInherit,ObjectInherit", "None", "Allow")

$Acl.SetAccessRule($Ar)
Set-Acl "\R9N2WRNShare" $Acl

De acuerdo con este tema

“cuando crea una FileSystemAccessRule de la manera que lo ha hecho, la propiedad InheritanceFlags se establece en Ninguno. En la GUI, esto corresponde a un ACE con el cuadro Aplicar a establecido en “Solo esta carpeta”, y ese tipo de entrada debe verse a través de la configuración avanzada”.

Probé la modificación y funciona, pero, por supuesto, el crédito se debe a que el MVP publicó la respuesta en ese tema.

Refiriéndose a la respuesta de Gamaliel: $args es un array de los argumentos que se pasan a un script en tiempo de ejecución, por lo que no se pueden usar de la forma en que lo está usando Gamaliel. Esto realmente está funcionando:

$myPath = 'C:whatever.file'
# get actual Acl entry
$myAcl = Get-Acl "$myPath"
$myAclEntry = "DomainUser","FullControl","Allow"
$myAccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule($myAclEntry)
# prepare new Acl
$myAcl.SetAccessRule($myAccessRule)
$myAcl | Set-Acl "$MyPath"
# check if added entry present
Get-Acl "$myPath" | fl

En caso de que tenga que lidiar con muchas subcarpetas que contienen subcarpetas y otras cosas recursivas. Pequeña mejora de @Mike L’Angelo:

$mypath = "path_to_folder"
$myacl = Get-Acl $mypath
$myaclentry = "username","FullControl","Allow"
$myaccessrule = New-Object System.Security.AccessControl.FileSystemAccessRule($myaclentry)
$myacl.SetAccessRule($myaccessrule)
Get-ChildItem -Path "$mypath" -Recurse -Force | Set-Acl -AclObject $myacl -Verbose

La verbosidad es opcional en la última línea.

Recuerda algo, que tienes concesión de agregar una reseña si diste con el arreglo.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *