You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Powershell将多个AD组内用户批量复制到新AD组

多旧AD组用户批量复制到对应新AD组实现方案

核心实现思路

使用PowerShell的哈希表定义新旧组映射关系,遍历映射时自动聚合所有旧组成员、自动去重后批量添加到新组,完美适配多对一的映射场景。

前置依赖

  • 执行脚本的设备需提前安装 RSAT Active Directory PowerShell模块
  • 执行账号需拥有所有目标新AD组的成员修改权限

具体实现步骤

  1. 定义新旧AD组映射关系
    使用哈希表存储映射,键为新AD组名称,值为对应多个旧AD组的数组,示例如下:
# 按你的实际映射关系补全即可
$groupMapping = @{
    "NewGroup1" = @("Oldgroup1", "Oldgroup2", "Oldgroup3")
    "NewGroup2" = @("Oldgroup4", "Oldgroup5")
    "NewGroup3" = @("Oldgroup6", "Oldgroup7", "Oldgroup8")
    # 剩余7个新组按上述格式补充
}
  1. 编写批量处理脚本
    脚本内置成员去重、已存在成员跳过逻辑,不会重复添加用户也不会抛出冗余错误:
# 导入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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 01:06:03