2010-12-16 15 views

Respuesta

8

He ampliado el fragmento de martona y pude dar acceso a todas las carpetas y subcarpetas. Aquí está mi código:

$FilesAndFolders = gci "c:\data" -recurse | % {$_.FullName} 
foreach($FileAndFolder in $FilesAndFolders) 
{ 
    #using get-item instead because some of the folders have '[' or ']' character and Powershell throws exception trying to do a get-acl or set-acl on them. 
    $item = gi -literalpath $FileAndFolder 
    $acl = $item.GetAccessControl() 
    $permission = "Everyone","FullControl","Allow" 
    $rule = New-Object System.Security.AccessControl.FileSystemAccessRule $permission 
    $acl.SetAccessRule($rule) 
    $item.SetAccessControl($acl) 
} 
+0

Gracias por esto. Funciona bien, y si alguien se pregunta "Get-Item-Litepath" funciona en rutas UNC, lo que significa que puede aplicar permisos a máquinas remotas. – Patrick

4
$acl = Get-Acl c:\mydir 
$permission = "Everyone","FullControl","Allow" 
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule $permission 
$acl.SetAccessRule($rule) 
$acl | Set-Acl c:\mydir 
+0

Gracias, pero agregó el grupo Todos solo a la carpeta superior y también la casilla de verificación FullControl no está marcada. ¿Qué me estoy perdiendo? – tempid

+0

Puede que esta no haya sido una buena respuesta a la pregunta, pero encontré que este ejemplo es útil hoy, así que lo apruebo. – yzorg

3

A veces, el modo "nativo" de PowerShell no es necesariamente la mejor manera. Para algo como esto, aún usaría icacls.exe. Recuerde que los buenos viejos trabajan bastante bien en PowerShell. Sólo entra en el directorio que desea establecer y ejecutar:

icacls $pwd /grant "Everyone":(OI)(CI)F 

Esto dará a todos un acceso completo al directorio actual hacia abajo (a través de la herencia de permisos). Esto debería funcionar siempre y cuando no haya denegaciones explícitas para Todos en la estructura del directorio.

+0

Al usar las secuencias de comandos a continuación se agregó la cuenta de todos, pero no les dio permisos. Este enfoque funcionó para mí ... – BrianH

+0

Lo usaría si supiera lo que significan los códigos mágicos. '(OI) (CF)' Soy un desarrollador que intenta ayudar con devops, no es un administrador que intenta automatizar las cosas, por lo que la magia es aterradora en comparación con la PowerShell "Read" o "FullControl" a continuación. – yzorg

Cuestiones relacionadas