【问题标题】:Add group "Everyone" to directory and all of it's sub-directories将组“Everyone”添加到目录及其所有子目录
【发布时间】:2014-07-15 04:41:17
【问题描述】:

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

谢谢!

【问题讨论】:

    标签: windows security powershell usergroups


    【解决方案1】:

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

    $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)
    }
    

    【讨论】:

    • 谢谢。效果很好,如果有人想知道“Get-Item -LiteralPath”适用于 UNC 路径,这意味着您可以将权限应用于远程计算机。
    【解决方案2】:

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

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

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

    【讨论】:

    • 使用下面的脚本添加了所有人帐户,但没有授予他们任何权限。这种方法对我有用...
    • 如果我知道魔法代码的含义,我会使用它。 (OI)(CF) 我是一名试图帮助开发人员的开发人员,而不是一名试图自动化事情的管理员,所以与下面的“Read”或“FullControl”powershell 相比,这样的魔法是可怕的。
    【解决方案3】:
    $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
    

    【讨论】:

    • 谢谢,但它仅将所有人组添加到顶部文件夹,并且未选中 FullControl 复选框。我错过了什么?
    • 这可能不是一个很好的问题答案,但我今天发现这个例子很有用,所以投票赞成。
    猜你喜欢
    • 1970-01-01
    • 2011-11-06
    • 1970-01-01
    • 2017-03-15
    • 1970-01-01
    • 1970-01-01
    • 2016-08-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多