ver usuario tiene proporcionar permisos permiso para listar estos este especiales debera dar compartidas carpetas cambiar atributos archivo administrador abrir file-permissions powershell-v3.0

file permissions - usuario - PowerShell para establecer permisos de carpeta



powershell permisos carpetas (2)

Estoy tratando de usar las opciones "predeterminadas" en la aplicación de permisos de carpeta; con eso, me refiero a usar el "Control total, escritura, lectura, etc." en las ''Propiedades'' para una carpeta.

La siguiente secuencia de comandos funciona para agregar al usuario, pero aplica "Permisos especiales", no los que tienen las casillas de verificación de las que están visibles en el menú de propiedades de la carpeta:

$Acl = Get-Acl "//R9N2WRN/Share" $Ar = New-Object System.Security.AccessControl.FileSystemAccessRule ("user","FullControl","Allow") $Acl.SetAccessRule($Ar) Set-Acl "//R9N2WRN/Share" $Acl

¿Qué estoy haciendo mal por favor?


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

$Acl = Get-Acl "//R9N2WRN/Share" $Ar = New-Object System.Security.AccessControl.FileSystemAccessRule("user", "FullControl", "ContainerInherit,ObjectInherit", "None", "Allow") $Acl.SetAccessRule($Ar) Set-Acl "//R9N2WRN/Share" $Acl

De acuerdo a este tema

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

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


Refiriéndose a la respuesta de @Gamaliel: $ args es una matriz de los argumentos que se pasan a un script en tiempo de ejecución, por lo que no se puede usar de la forma en que lo usa @Gamaliel. esto está funcionando realmente

$myPath = ''C:/whatever.file'' # get actual Acl entry $myAcl = Get-Acl "$myPath" $myAclEntry = "Domain/User","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