【问题标题】:Adding an ACL rule from one user to others in powershell在PowerShell中将ACL规则从一个用户添加到其他用户
【发布时间】:2026-01-09 02:20:07
【问题描述】:

我正在尝试从一个用户那里提取访问规则并将其应用于所有其他用户。当我运行以下命令时,它不会给出错误,但也不会添加规则。当我注销 $access 时,这是我想要的规则(该用户列表中的第四个)。当我注销 $acl 时,它是组中每个用户的 acl 对象。我没有收到错误提示 AddAccessRule 方法不存在。

当我在运行脚本后查看 Active Directory 中的用户时,他们没有发生任何变化。

有谁知道我在这里做错了什么或更好的方法来完成这个?

$users = Get-ADUser -SearchBase “OU=Users,OU=Corporate Office,DC=corp,DC=company DC=com”-filter * | Select-Object -ExpandProperty DistinguishedName 
$access = (Get-Acl ‘CN=peron,OU=Users,OU=Corporate Office,DC=corp,DC=company,DC=com’).access[3]
    foreach ($user in $users){
        $acl = (Get-Acl $user)
       echo $acl
       $acl.AddAccessRule(($access))    
    } 

【问题讨论】:

  • 我没有看到任何代码在您使用 set-acl 应用更新后的 acl 时

标签: powershell active-directory


【解决方案1】:

pointed out in the comments 一样,您在任何时候都不会使用Set-ACL

添加访问规则,然后不对目标对象设置更新的 ACL,相当于修改 Word 文档,然后不保存更改。

foreach ($user in $users){
    $acl = (Get-Acl $user)
    $acl.AddAccessRule(($access))
    Set-Acl -AclObject $acl $user.DistinguishedName    
} 

【讨论】:

    最近更新 更多