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

PowerShell实现AD组成员按组单独导出为同名CSV并标注成员类型

实现方案

直接使用下方调整完成的PowerShell脚本即可匹配全部需求:

# 配置目标OU路径、文件导出根目录
$OU = 'OU=Microsoft Exchange Security Groups,DC=Domain,DC=com'
$exportRoot = 'D:\ExchangeSecurityGroups_Members'

# 自动创建导出目录,避免路径不存在报错
if (-not (Test-Path $exportRoot)) {
    New-Item -ItemType Directory -Path $exportRoot -Force | Out-Null
}

# 读取目标OU下的所有AD安全组
$groups = Get-ADGroup -Filter * -SearchBase $OU

foreach ($group in $groups) {
    # 递归拉取组下所有成员(含嵌套组成员),提取要求的3个字段
    $members = Get-ADGroupMember -Identity $group -Recursive | Select-Object `
        @{Name='AD用户名'; Expression={$_.SamAccountName}},
        @{Name='显示名'; Expression={$_.Name}},
        @{Name='成员类型'; Expression={$_.objectClass}}
    
    # 过滤组名里的非法文件名字符,防止写入失败
    $validGroupName = $group.Name -replace '[\\/:*?"<>|]', '_'
    $outputPath = Join-Path $exportRoot "$validGroupName.csv"
    
    # 按组名单独导出CSV,使用UTF8编码避免乱码
    $members | Export-Csv -Path $outputPath -NoTypeInformation -Encoding UTF8
}

脚本对应解决的原有问题

  • 不再将所有组成员合并到单个文件,遍历每个组时单独生成和组名同名的CSV文件
  • 新增成员类型字段,直接通过AD返回的objectClass属性标识成员是用户(user)、组(group)还是其他对象,嵌套组的成员也会被正确递归识别
  • 导出字段严格匹配需求,仅保留AD用户名、显示名、成员类型三个字段,后续重建组时可以直接读取复用
  • 增加了非法文件名处理、目录自动创建、UTF8编码等兼容逻辑,避免运行时出现非预期错误

运行脚本前请确保当前终端已加载Active Directory模块,且执行账号拥有对应OU的组、成员读取权限。

内容的提问来源于stack exchange,提问作者Senior Systems Engineer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 20:27:25