9

我目前正在使用 Vista 32 位。如何添加 Windows 安全组“Everyone”并完全控制目录及其所有子目录和所有文件?有我可以使用的powershell脚本吗?

谢谢!

4

3 回答 3

13

我已经扩展了 martona 的片段,并且能够访问所有文件夹和子文件夹。这是我的代码 -

$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)
}
于 2010-12-16T22:32:08.610 回答
7

有时,“本机”PowerShell 方式不一定是最好的方式。对于这样的事情,我仍然会使用 icacls.exe。请记住,好的 ol' exe 在 PowerShell 中工作得非常好。只需 cd 到您要设置和执行的目录:

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

这将使每个人都可以向下访问当前目录(通过权限继承)。只要目录结构中没有明确拒绝所有人,这应该可以工作。

于 2010-12-20T22:05:20.950 回答
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
于 2010-12-16T19:12:38.847 回答