You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

获取多组AD用户:导出三个不同组成员列表的方法求助

导出多个AD组成员列表的可行方案

嘿,我来帮你搞定导出三个AD组成员列表的事儿!之前用管道过滤单个变量没生效,大概率是没批量处理多个组,或者没正确获取用户的完整信息对吧?下面给你两个实用的PowerShell方案,亲测好用:

方案一:每个组单独导出CSV文件

这个方法会给每个AD组生成独立的成员列表,方便你分别查看:

# 先导入AD模块(如果系统没自动加载的话)
Import-Module ActiveDirectory

# 替换成你实际的三个AD组名称
$targetGroups = "市场部成员组", "技术部核心组", "行政部全员组"

# 循环遍历每个组,导出成员
foreach ($group in $targetGroups) {
    # 获取组内所有用户(-Recursive会包含嵌套组里的成员,不需要就删掉)
    Get-ADGroupMember -Identity $group -Recursive |
        # 只筛选用户对象,排除组和计算机
        Where-Object { $_.objectClass -eq "user" } |
        # 获取用户的详细属性(可以按需添加更多属性,比如Department)
        Get-ADUser -Properties Name, EmailAddress, SamAccountName, Department |
        # 选择你需要导出的列
        Select-Object Name, SamAccountName, EmailAddress, Department |
        # 导出到CSV,文件名自动包含组名
        Export-Csv -Path ".\$group_成员列表.csv" -NoTypeInformation -Encoding UTF8
    
    Write-Host "✅ 已完成组 [$group] 的成员导出,文件路径:.\$group_成员列表.csv"
}

方案二:合并所有组成员到一个CSV文件

如果想把三个组的成员汇总到一个文件,还能区分所属组,可以用这个方法:

Import-Module ActiveDirectory

$targetGroups = "市场部成员组", "技术部核心组", "行政部全员组"
# 创建空数组存储所有成员数据
$allGroupMembers = @()

foreach ($group in $targetGroups) {
    $members = Get-ADGroupMember -Identity $group -Recursive |
        Where-Object { $_.objectClass -eq "user" } |
        Get-ADUser -Properties Name, EmailAddress, SamAccountName |
        # 新增一列标记成员所属的组
        Select-Object @{Name="所属AD组"; Expression={$group}}, Name, SamAccountName, EmailAddress
    
    # 把当前组的成员数据加入总数组
    $allGroupMembers += $members
}

# 导出合并后的列表
$allGroupMembers | Export-Csv -Path ".\所有AD组成员汇总.csv" -NoTypeInformation -Encoding UTF8
Write-Host "✅ 已完成所有组的成员合并导出,文件路径:.\所有AD组成员汇总.csv"

为啥你之前的方法没生效?

大概率是这几个原因:

  • 只针对单个组变量做了处理,没有遍历三个组,导致只导出了一个组的成员;
  • 直接用Get-ADGroupMember的结果导出,没结合Get-ADUser获取用户的详细属性(Get-ADGroupMember默认返回的属性很少);
  • 没加-Recursive参数,导致嵌套在组里的成员没被导出(如果你的AD组有嵌套结构的话)。

内容的提问来源于stack exchange,提问作者Charlypop

火山引擎 最新活动