如何用PowerShell在AD安全选项卡中将组添加到另一组?
解决方法:用PowerShell配置AD组的ACL权限
要在AD组的安全选项卡中添加其他组的权限,**确实需要通过ACL(访问控制列表)**实现——AD对象的权限体系完全基于Windows ACL模型。以下是针对你的需求的修正方案:
原代码问题分析
你提供的代码存在几个关键语法/逻辑错误:
- 模块导入与变量定义连写,导致语法失效:
import-module ActiveDirectory$path需拆分为两行 - AD路径中组名被换行拆分:
CN=Kat- VPN3应修正为CN=Kat-VPN3 ActiveDirectoryAccessRule构造函数参数不全:缺少继承规则、传播规则等必要参数,会导致权限应用异常- 域名占位符未替换:
DOMAIN\Kat-VPN1需替换为实际域名(比如你的环境是tm\Kat-VPN1)
修正后的完整代码
cls # 导入AD模块 Import-Module ActiveDirectory # 目标组Kat-VPN3的AD路径,确保组名和OU路径无换行 $path = "AD:\CN=Kat-VPN3,OU=Groups,OU=LOC_1,OU=OFFICE,DC=tm,DC=pl" # 获取目标组的当前ACL $acl = Get-Acl -Path $path # 定义新的访问控制条目(ACE):给Kat-VPN1组分配FullControl权限 # 参数说明:身份标识、权限、继承类型、传播类型、访问控制类型 $ace = New-Object System.DirectoryServices.ActiveDirectoryAccessRule( "tm\Kat-VPN1", # 替换为实际域名+组名 "FullControl", # 权限类型,可按需调整为Read、Write等 "None", # 继承规则:None表示权限仅应用于当前组对象 "None", # 传播规则:None表示不向下传播 "Allow" # 允许访问 ) # 将ACE添加到ACL中 $acl.AddAccessRule($ace) # 应用修改后的ACL到目标组 Set-Acl -Path $path -AclObject $acl
关键说明
- 权限调整:如果不需要
FullControl,可替换为具体权限,比如Read、Write、CreateChild等,具体可参考ActiveDirectoryRights枚举值 - 继承与传播:若需让权限继承到子对象(比如组的成员),可将
"None"改为"Descendents"等合适的继承类型 - 验证权限:执行代码后,可通过ADUC(Active Directory用户和计算机)打开Kat-VPN3的安全选项卡,确认Kat-VPN1组已被添加并拥有对应权限
内容的提问来源于stack exchange,提问作者Tomasz Młynek
相关产品推荐
相关产品推荐

