如何使用Powershell将多个AD组内用户批量复制到新AD组
多旧AD组用户批量复制到对应新AD组实现方案
核心实现思路
使用PowerShell的哈希表定义新旧组映射关系,遍历映射时自动聚合所有旧组成员、自动去重后批量添加到新组,完美适配多对一的映射场景。
前置依赖
- 执行脚本的设备需提前安装 RSAT Active Directory PowerShell模块
- 执行账号需拥有所有目标新AD组的成员修改权限
具体实现步骤
- 定义新旧AD组映射关系
使用哈希表存储映射,键为新AD组名称,值为对应多个旧AD组的数组,示例如下:
# 按你的实际映射关系补全即可 $groupMapping = @{ "NewGroup1" = @("Oldgroup1", "Oldgroup2", "Oldgroup3") "NewGroup2" = @("Oldgroup4", "Oldgroup5") "NewGroup3" = @("Oldgroup6", "Oldgroup7", "Oldgroup8") # 剩余7个新组按上述格式补充 }
- 编写批量处理脚本
脚本内置成员去重、已存在成员跳过逻辑,不会重复添加用户也不会抛出冗余错误:
# 导入AD模块 Import-Module ActiveDirectory # 遍历每一组映射关系 foreach ($newGroup in $groupMapping.Keys) { # 收集当前新组对应所有旧组的成员,自动去重 $allMembers = foreach ($oldGroup in $groupMapping[$newGroup]) { Get-ADGroupMember -Identity $oldGroup -Recursive | Where-Object ObjectClass -eq "user" } | Select-Object -Unique SamAccountName, DistinguishedName # 批量添加到新组,跳过已存在的成员 foreach ($member in $allMembers) { Add-ADGroupMember -Identity $newGroup -Members $member.DistinguishedName -ErrorAction SilentlyContinue } Write-Host "已完成 $newGroup 的成员同步,共同步 $($allMembers.Count) 个用户" }
测试建议
正式执行前可先做验证:将Add-ADGroupMember行替换为下方代码,先输出待添加的用户列表确认无误后再执行正式操作:
Write-Host "待添加到 $newGroup 的用户:$($member.SamAccountName)"
内容的提问来源于stack exchange,提问作者9944990
相关产品推荐
相关产品推荐

